0

目前我正在解决加载文件的问题 - 我使用了 IFormFile,但我现在需要为每个文件添加一个变量(布尔值) - 以了解用户是否将此文件标记为主文件或附加文件。

我试图制作自己的课程:

public class MyFormFile :FormFile
    {
        public MyFormFile(Stream baseStream, long baseStreamOffset, long length, string name, string fileName) : base(baseStream, baseStreamOffset, length, name, fileName)
        {
            MainFile = true;
        }

        public bool MainFile { get;set;}
    }

但是当我使用它时,模型中没有文件。(当我使用List<IFormFile>而不是List<MyFormFile>在模型中时,它可以工作。

当前从浏览器发送的文件如下所示:

文件 {mainFile: true, name: "Test_Result.pdf", lastModified: 1597833278041, lastModifiedDate: Wed Aug 19 2020 12:34:38 GMT+0200 (Central European Summer Time), webkitRelativePath: "", ...}

我错过了什么?

谢谢。

4

1 回答 1

0

您可以尝试使用这样的模型:

 public class FileInputModel
    {
        public FileInputModel(){
            MainFile = true;
        }
        public IFormFile File { get; set; }
        public bool MainFile { get; set; }
    }

你可以使用ajax来发布数据FileInputModel到控制器的结构,这里有一个演示:

测试控制器:

public IActionResult TestFiles(List<FileInputModel> files) {
            return View();
        }

看法:

<form method="post">
    <input id="Files" type="file" multiple/>
    <input type="button" value="submit" onclick="Submit()"/>
</form>
<script>
    function Submit() {
        var pdata = new FormData();
        var files = $("#Files").get(0).files;
        for (var i = 0; i < files.length;i++) {
            pdata.append('files[' + i + '].File', files[i]);
        }
        $.ajax({
            url: "TestFiles",
            type: "POST",
            data: pdata,
            processData: false,
            contentType: false,
            success: function (data) {
            }
        });

    }
</script>

结果: 在此处输入图像描述

于 2021-02-18T03:42:30.457 回答