C# 未从文件上载接收任何数据

C# 未从文件上载接收任何数据,c#,file-upload,asp.net-core,asp.net-core-2.0,bootstrap-file-upload,C#,File Upload,Asp.net Core,Asp.net Core 2.0,Bootstrap File Upload,我正在尝试使用上载文件。我正在使用ASP.NETCore2。这是我的HTML: <input id="fileFileUpload" type="file" /> 这是我的控制器代码: [HttpPost] public JsonResult Index(List<IFormFile> files) { // Do stuff } [HttpPost] 公共JsonResult索引(列表文件) { //做事 } 我在我的控制器方法上放置了一个断点,断点被击中

我正在尝试使用上载文件。我正在使用ASP.NETCore2。这是我的HTML:

<input id="fileFileUpload" type="file" />
这是我的控制器代码:

[HttpPost]
public JsonResult Index(List<IFormFile> files)
{
    // Do stuff
}
[HttpPost]
公共JsonResult索引(列表文件)
{
//做事
}

我在我的控制器方法上放置了一个断点,断点被击中了。但是
文件
为空。如何检索已上载的文件?

我可以看到该代码不起作用的第一个原因是您在中的输入没有指定名称

<input id="fileFileUpload" name="files" type="file" />


除此之外,您还可以阅读MSDN文章。

您可以从另一个按钮访问文件,然后像往常一样使用ajax发布它们。ButtonFileUpload8是新按钮的ID,file-8是文件上载控件的ID。你必须禁用上传按钮

这不是完美的代码,我只是把它放在一起展示它是如何完成的

HTML:

然后在接收控制器中,您可以使用:

    public ActionResult UploadFiles3(List<IFormFile> files)
    {
        string nams = "";
        string funame = "";

        foreach (IFormFile source in files)
        {
            string filename = ContentDispositionHeaderValue.Parse(source.ContentDisposition).FileName.ToString();

            filename = this.EnsureCorrectFilename(filename);

            nams = nams + source.FileName.ToString();

            funame = "D:\\Data\\PointsAlign\\Core\\" + filename;

            FileStream output = System.IO.File.Create(funame);

            source.CopyTo(output);
        }

        return Json("Hi, Alster. Your files uploaded successfully " + nams);

    }
public ActionResult上传文件3(列表文件)
{
字符串nams=“”;
字符串funame=“”;
foreach(文件中的文件源)
{
string filename=ContentDispositionHeaderValue.Parse(source.ContentDisposition.filename.ToString();
filename=this.EnsureCorrectFilename(文件名);
nams=nams+source.FileName.ToString();
funame=“D:\\Data\\PointsAlign\\Core\\\”+文件名;
FileStream输出=System.IO.File.Create(funame);
source.CopyTo(输出);
}
返回Json(“嗨,阿尔斯特,你的文件上传成功”+nams);
}

这确实有效,但我还没有针对任何问题对其进行压力测试

是的,这是我的问题。我没有意识到在输入元素上必须有
name
属性。一旦我添加了这些,它就如预期的那样工作了!谢谢
    <form enctype="multipart/form-data">
        <div class="row mb-2">
            <div class="col-md-8">
                <div class="file-loading">
                    <input id="file-8" type="file" multiple>
                </div>
            </div>
        </div>
        <div class="btn-group btn-group-sm mr-1" role="group">
            <button id="ButtonFileUpload8" type="button" class="btn btn-sm">
                Blue
            </button>
        </div>

    </form>
    $("#file-8").fileinput({
        uploadUrl:"@Url.Action("FileUploadKrajee", "App")",
        uploadAsync: true,
        minFileCount: 1,
        maxFileCount: 5,
        overwriteInitial: false,
        initialPreview: "",
        initialPreviewConfig: "",
        uploadExtraData: "",
        showUpload: false
    });

    //  Click of upload button

    $("#ButtonFileUpload8").click(function () {
        var control = document.getElementById("file-8");
        var files = control.files;
        var formData = new FormData();

        for (var i = 0; i != files.length; i++) {
            formData.append("files", files[i]);
        }

        $.ajax({
            url: 'UploadFiles3',
            type: "POST",
            contentType: false, // Do not set any content header
            processData: false, // Do not process data
            data: formData,
            async: false,
            success: function (result) {
                if (result != "") {
                    alert(result);
                }
                control.files.value("");
            },
            error: function (err) {
                alert(err.statusText);
            }
        });
    });
    public ActionResult UploadFiles3(List<IFormFile> files)
    {
        string nams = "";
        string funame = "";

        foreach (IFormFile source in files)
        {
            string filename = ContentDispositionHeaderValue.Parse(source.ContentDisposition).FileName.ToString();

            filename = this.EnsureCorrectFilename(filename);

            nams = nams + source.FileName.ToString();

            funame = "D:\\Data\\PointsAlign\\Core\\" + filename;

            FileStream output = System.IO.File.Create(funame);

            source.CopyTo(output);
        }

        return Json("Hi, Alster. Your files uploaded successfully " + nams);

    }