繁体   English   中英

Angular 6 - 单个表单组中的多个文件输入

[英]Angular 6 - Multiple file input in single form group

我正在为我的Web应用程序设置一个上传器,它由2个文件输入元素组成,其中第一个文件输入将获取图像并将其存储到images变量列表中,第二个将获取pdf并将其存储到列表中pdf文件变量。

我对它做的方法是将文件对象存储在名为pdfStorage和imageStorage的变量中,以便在填写表单中的必要字段并按下确认按钮后将其传递给dotnet core api服务。

将文件对象存储到变量时,我不会在客户端遇到问题。 但是,只要我将这些值发送到服务的参数,它就会始终为这些字段显示null。

我在dotnet核心服务中查看了Request.Form,我发现它就在那里。 我不明白为什么它没有被填充到ActionResult的参数。

这是我在dotnet核心服务中放置的代码:

的ActionResult:

[HttpPost("SaveNewData"),DisableRequestSizeLimit]
[Consumes("multipart/form-data")]
public ActionResult SaveNewData([FromForm]MyModelUpload modelUpload) {
    var modelUploaded = modelUpload;
    return Ok();
}

参数模型:

public class MyModelUpload {
    public IFormFile[] imageFile { get; set; }
    public string description {get;set;}
    public IFormFile[] pdfFileList {get;set;}
    public string uploadedBy { get; set; }
    public string title { get; set; }
    public DateTime? dateEnd {get; set;}
}

这是我用于以角度发送表单数据的测试代码:

SaveNewData(formGroupData) {
    let submitData = new FormData();
    let pdfFileArray = formGroupData.pdfStorage;

    // UPLOAD'S DETAIL
    submitData.append('title',formGroupData.title);
    submitData.append('description',formGroupData.title);
    submitData.append('uploadedBy',formGroupData.uploadedBy);
    submitData.append('dateEnd',formGroupData.dateEnd);

    // // FOR IMAGE FILE
    let imageFileObject = <File>formGroupData.imageStorage[0];
    console.log(pdfFileArray);
    submitData.append('imageFile[]',imageFileObject,imageFileObject.name);

    // // LIST OF PDF DOCS
    for(let arrayIndex in pdfFileArray) { 
        submitData
            .append(`pdfFileList[]`,pdfFileArray[arrayIndex]
                ,pdfFileArray[arrayIndex].name);
    }

    return this.http
        .post(`http://localhost:5000/Upload/SaveNewData`,submitData);
}

如何发送存储在存储变量中的文件对象?

你应该用这个:

 SaveNewData(formGroupData) {
    let submitData = new FormData();
    let pdfFileArray = formGroupData.pdfStorage;

    // UPLOAD'S DETAIL
    submitData.append('title',formGroupData.title);
    submitData.append('description',formGroupData.title);
    submitData.append('uploadedBy',formGroupData.uploadedBy);
    submitData.append('dateEnd',formGroupData.dateEnd);

    // // FOR IMAGE FILE
    let imageFileObject = <File>formGroupData.imageStorage[0];
    console.log(pdfFileArray);
    submitData.append('imageFile',imageFileObject);

    // // LIST OF PDF DOCS

   for (let i = 0; i < pdfFileArray.length; i++) {
     submitData.append("pdfFileList",pdfFileArray[i]);
    }

    return this.http
        .post(`http://localhost:5000/Upload/SaveNewData`,submitData);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM