提问人:Uğur Demirel 提问时间:6/5/2023 更新时间:6/5/2023 访问量:69
当其中一个属性的类型为文件格式时,如何将数组数据追加到 FormData
How to append array data to FormData when the type of one of the properties is in the file format
问:
我正在使用 formdata 进行文件上传操作...
如何以数组格式加载数据(其中一个属性类型是文件)。
JSON.stringify 不起作用
我如何在控制器端使用它
public class SampleData
{
public string t { get; set; }
public HttpPostedFileBase u { get; set; }
public SampleData() { }
}
public JsonResult Save(FormCollection model, SampleData[] upls) {
...
}
示例数据
var data = [{t:"lorem",u: file}, {t:"ipsum",u: file}, { t:"generator", u: file}];
我尝试在下面的 3 个不同结构中附加 formdata,但没有成功
第三个例子的来源
$.each(data, function(index,vs) {
formdata.append('upls[]', vs); // Sample 1
})
$.each(data, function(index,vs) {
formdata.append('upls[][t]', vs.t); // Sample 2
formdata.append('upls[][u]', vs.u);
});
$.each(data, function(index,vs) {
var f = new Array(); // Sample 3
f.t = vs.t;
f.u = vs.u;
formdata.append('upls[]', f);
});
答:
0赞
Predator13
6/5/2023
#1
与其直接使用循环来附加数据,不如尝试使用对象循环,如下所示:-
Object.entries(data).forEach(entry => {
const [key, value] = entry;
formData.append(key, JSON.stringify(value));
})
以下是通过循环 formdata 来检查它的方法:-
for(let [key, value] of formData) {
alert(`${key} = ${value}`); // key1 = value1, then key2 = value2
}
完整代码:-
let formData = new FormData();
Object.entries(data).forEach(entry => {
const [key, value] = entry;
formData.append(key, JSON.stringify(value));
})
for(let [key, value] of formData) {
alert(`${key} = ${value}`); // key1 = value1, then key2 = value2
}
评论
0赞
Uğur Demirel
6/6/2023
除了 JSON.stringify 之外没有其他解决方案?
评论