为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
狐的传说 2023-05-15 14:32:13
我的 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,


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信