通过ajax发送具有文件作为字段的对象

时间:2019-05-17 14:22:57

标签: javascript html .net core

我有类似结构化对象的文件夹(每个文件夹上都有文件的树状文件夹结构)。我试图将此对象发送给我的服务器(现在是.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

0 个答案:

没有答案