我有类似结构化对象的文件夹(每个文件夹上都有文件的树状文件夹结构)。我试图将此对象发送给我的服务器(现在是.net core 2.2),但出现故障。
我尝试将此对象作为FormData发送(因为我使用文件)并序列化为json,但是在任何情况下,当我使用混合(文件和字段)对象时,我都会得到所有字段均为空值的对象。尝试过Convert JS Object to form data此解决方案,但是contoller动作没有得到请求。
对象结构示例
let newFolder = {
name: name,
folders: [],
images: []
}
let newImage = {
name: file.name,
url: window.URL.createObjectURL(file),
file: file, //File from input
}
我如何尝试作为FormData上传
var form_data = new FormData();
buildFormData(form_data, rootFolder);
console.log(form_data);
$.ajax({
url: 'myurl',
processData: false,
contentType: false,
data: form_data,
type: 'post'
});
function buildFormData(formData, data, parentKey) {
if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {
Object.keys(data).forEach(key => {
buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key);
});
} else {
const value = data == null ? '' : data;
formData.append(parentKey, value);
}
}
预期结果:带有IFormFile的.net对象,而不是图像字段或不可能的信息的文件字段。
更新: 表单已发送到控制器,但.net核心无法解析它。(尝试过Mapping nested x-form-urlencoded data to DTO in Asp.NET Core)