我的 html 代码中有一个 html 文件选择器。我从那个选择器中选择一个图像并通过 jquery 将它发送到 golang 代码。但是图像文件不会被 golang 代码接收。我正在展示我的 html 和 golang 代码。HTML:-<input type="file" name="myFile" id="imageSelector"><br><br><button id="uploadImage">Upload Image</button>查询:-$( document ).ready(function() { var inputFile = $('#imageSelector').val().split('\\').pop(); // give you file name $("#uploadImage").on("click", function(e){ $.ajax({ url: "/api/v1/upload", type: "POST", contentType: false, processData: false, data:{"file":inputFile}, success: function(response){ console.log(response); } }); });});在 golang 代码中,我使用 gin 包接收它func GetSelectedImage(c *gin.Context){ file, err := c.FormFile("file") fmt.Pritnln(file) //it will show nothing fmt.Println(err) // request Content-Type isn't multipart/form-data} 错误:-请求内容类型不是多部分/表单数据我在做什么错误在哪里。我无法更改我的 golang 代码,但 html 代码是可编辑的。谁能告诉我我做错了什么。
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
您正在传递data一个普通对象并告诉 jQuery 不要处理它。
这意味着它只是被转换为字符串[object Object]并且 jQuery 将内容类型设置为text/plain;charset=UTF-8.
所以它不是 multipart/form-data 也没有声称是。
而是传递一个FormData对象,并传递一个file,而不仅仅是文件名。
const data = new FormData();
data.append("file", $("#imageSelector")[0].files[0], inputFile);
// ...
contentType: false,
processData: false,
data: data,
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消