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

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

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

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

阅读 5.7k
3 个回答

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

通过表单传过去,如:

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题