从 Javascript 上传文件并通过 Go 接收文件时遇到问题
Having trouble uploading files from Javascript and receiving it through Go
我使用 Axios 在 JavaScript 中设置了一个简单的前端服务。该服务获取文件列表并使用 post 请求发送到我的服务器代码。我的 JavaScript 看起来像这样
const testPost = async (files) => {
let formData = new FormData();
files.forEach((file) => {
formData.append("file", file);
});
const res = await axios({
method: "POST",
url: baseUrl,
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
return res;
};
我的 Go 代码如下所示:
func (h *SendHandler) TestPost(w http.ResponseWriter, r *http.Request) {
//Allow CORS here By * or specific origin
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
formdata := r.MultipartForm
fmt.Println(formdata)
}
我认为我的问题出在 Go 中的 TestPost 函数主体,因为我在前端代码中单击“发送”,收到了响应。在我的 Go 函数中,当我打印我的表单数据时,它输出 <nil>
。我希望能够访问列表中的每个文件,但我什至无法访问表单数据。我对 web dev 和 Go 仍然是新手,所以我在这里肯定有一些误解。有什么指点吗?
documentation for MultipartForm 说:
MultipartForm is the parsed multipart form, including file uploads. This field is only available after ParseMultipartForm is called.
在使用 r.MultipartForm
之前调用 ParseMultipartForm 进行修复。
err := r.ParseMultipartForm(maxMemory)
if err != nil {
http.Error(w, "Bad Request", http.StatusBadRequest)
return
}
// r.MultipartForm is now set.
fmt.Println(r.MultipartForm) // does not print nil
我使用 Axios 在 JavaScript 中设置了一个简单的前端服务。该服务获取文件列表并使用 post 请求发送到我的服务器代码。我的 JavaScript 看起来像这样
const testPost = async (files) => {
let formData = new FormData();
files.forEach((file) => {
formData.append("file", file);
});
const res = await axios({
method: "POST",
url: baseUrl,
data: formData,
headers: {
"Content-Type": "multipart/form-data",
},
});
return res;
};
我的 Go 代码如下所示:
func (h *SendHandler) TestPost(w http.ResponseWriter, r *http.Request) {
//Allow CORS here By * or specific origin
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
formdata := r.MultipartForm
fmt.Println(formdata)
}
我认为我的问题出在 Go 中的 TestPost 函数主体,因为我在前端代码中单击“发送”,收到了响应。在我的 Go 函数中,当我打印我的表单数据时,它输出 <nil>
。我希望能够访问列表中的每个文件,但我什至无法访问表单数据。我对 web dev 和 Go 仍然是新手,所以我在这里肯定有一些误解。有什么指点吗?
documentation for MultipartForm 说:
MultipartForm is the parsed multipart form, including file uploads. This field is only available after ParseMultipartForm is called.
在使用 r.MultipartForm
之前调用 ParseMultipartForm 进行修复。
err := r.ParseMultipartForm(maxMemory)
if err != nil {
http.Error(w, "Bad Request", http.StatusBadRequest)
return
}
// r.MultipartForm is now set.
fmt.Println(r.MultipartForm) // does not print nil