FormData实现多文件上传的问题

虽然知道FormData可以多文件同时上传,但目前这次的需求不一样,需要每个图片附带一些用户的选择参数。比如。
scope.FileList为file多选后的文件数组。

https://img3.mukewang.com/5c19ce0a00019ce610200226.jpg

如果按照常规多文件上传的话完全没问题。

https://img4.mukewang.com/5c19ce1600013d7805900133.jpg

但是目前的需求是每个图片有着不同的参数,我试过将参数直接丢到图片对象里

 scope.FileList.forEach(function(e,index){

    e.Imagestype = '新房'+index;

    data.append('picture[]',e,'picture'+index);

})

或者将图片和参数丢到object里然后……

scope.FileList.forEach(function(e,index){

    var obj = new Object();

    obj.type = 'test'

    obj.image = e;

    data.append('picture[]',JSON.stringify(obj),'test');

})

我承认脑洞有点大。但是我实在不知道如何能以JSON的格式上传文件。例如:

[

   {type:'户景图',Image:'file文件'},

   {type:'户景图',Image:'file文件'},

   {type:'户景图',Image:'file文件'},

   {type:'户景图',Image:'file文件'},

   {type:'户景图',Image:'file文件'},

]

貌似FromData只有一个append方法可以操作。那么常规的多文件上传是怎么一个思路呢?或者说这个需求压根就不合理呢?

青春有我
浏览 945回答 1
1回答

慕村225694

你这种思路不可行。formdata是单纯的key-value结构,而文件只能在value这一层,不能再更深一层。不过你可以通过在最后维护一个属性对象来把属性另外传上去。例如,你的formdata是这样的结构:{    "image1": xxx.jpg,    "image2": xxx2.jpg,    "fileAttrs": {        "image1": some attributes,        "image2": some attributes    }}当然,fileAttrs要转成JSON字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript