如何将文件从html选择器发送到golang api



我的html代码中有一个html文件选择器。我从选择器中选择一个图像,并通过jquery将其发送到golang代码。但是图像文件不会被golang代码接收。我正在展示我的html和golang代码。

html:-

<input type="file" name="myFile" id="imageSelector"><br><br>
<button id="uploadImage">Upload Image</button>

jquery:-

$( 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);
}
});
});
});

在戈兰代码中,我使用杜松子酒包装接收它

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代码是可编辑的。有人能告诉我我做错了什么吗。

您正在向data传递一个普通对象,并告诉jQuery不要处理它。

这意味着它只转换为字符串[object Object],jQuery将内容类型设置为text/plain;charset=UTF-8

所以它不是多部分/表单数据,也没有声称是。


改为传递FormData对象,并传递一个文件,而不仅仅是文件名。

const data = new FormData();
data.append("file", $("#imageSelector")[0].files[0], inputFile);
// ...
contentType: false,
processData: false,
data: data,

最新更新