IFormFile没有被dropzone uploadMultiple请求填充

Liv*_*wen 6 c# file-upload http dropzone.js .net-core

我遇到的问题是IFormFile列表没有填充给定的文件,但是当我调用HttpContext.Request.Form.Files时; 然后我可以访问这些文件.我更喜欢使用IFormFile,因为它似乎是新的Dotnet核心2.0的做事方式.

我有以下请求有效负载: 请求负载

使用以下请求标头: 请求标头

和Razor页面处理程序:

public async Task<ActionResult> OnPostSend(ConditionResponse conditionResponse)
    {
        var files = HttpContext.Request.Form.Files;
    }
Run Code Online (Sandbox Code Playgroud)

条件响应模型:

public class ConditionResponse
{
    public List<string> Plots { get; set; }

    public string Comments { get; set; }

    public List<IFormFile> Files { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Liv*_*wen 7

在查看来自html5多文件上传的请求后,我注意到请求没有将索引添加到文件名(files [n]).Dropzone.js这样做是有解决方法的.如果您将paramName选项添加到Dropzone JS配置并让它调用返回文件的方法,您将获得与html5多文件上载相同的行为.

function myParamName() {
                return "files";
            }

 Dropzone.options.myDropzone = {
                uploadMultiple: true,
                paramName: myParamName,
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*din 5

接受的答案非常有效,我不确定为什么以及如何,但它有效。我只是想摆脱那个附加功能,即我们可以像这样使用它:

 Dropzone.options.myDropzone = {
                uploadMultiple: true,
                paramName: () => "files",
}
Run Code Online (Sandbox Code Playgroud)

或者如果旧浏览器也成为目标:

 Dropzone.options.myDropzone = {
                uploadMultiple: true,
                paramName: function () { "files" },
}
Run Code Online (Sandbox Code Playgroud)