axios上传数组 数组内包含file对象

发布于 2022-09-11 16:06:11 字数 367 浏览 6 评论 0

1.描述问题
需求如上,后端接口需要我post的格式为:

{
    'type': '***',
    'list': [
        {
            'filename': '***',
            'filedata': File类型的数据
        }
    ]
}

2.做过的尝试
我直接设置content-type为application/x-www-form-urlencoded,但是发送的数据不是后端要的,于是改为multipart/form-data,发现也不能正确传送File类型的数据
3.所以在使用axios的时候,碰到这种类型的传参,该怎么做呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

世态炎凉 2022-09-18 16:06:11

通过表单获取文件源哈,你是怎么获取上传的内容!

紧拥背影 2022-09-18 16:06:11

通过表单传过去,如:

var form = new FormData();
//第一个参数为文件对象的一个序列之类的,如果没必要传就无需传
//第二个参数为一个文件对象
form.append('filekey',files);
axios.post(url,form).then((data) => { //上传成功回调 })
心奴独伤 2022-09-18 16:06:11

我建议还是分开弄吧,首先你传的对象过去是[obj obj] 就是没json串化,这样后台接到都是这种,而file类型json串化的时候就会就会干掉,类型不符合。
你可以跟后台调整参数,专门留一个字段接文件参数,其他的还是json数据通信,
大概就是
let params = new FormData();
params.append('file', this.simpleVideoFile); //是个文件集合数组也没关系,或者多传几次同字段,后台是都能区分的,得协商好
params.append('param', JSON.stringify(别的参数))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文