HttpPost Ajax 调用 ASP.NET CORE 中的 404 错误

Car*_*los 3 c# asp.net ajax asp.net-mvc .net-core

我正在尝试在 Ajax 请求中发布文件。它在本地主机中工作,但在服务器上发布后却没有,它总是返回 404。

不知道是不是路线问题。

如果有人能给我一些想法,我很感激。

我的代码在这里:

看法:

<form method="post" enctype="multipart/form-data">
<input type="file" id="files"
             name="files" multiple />
<input type="button"
             id="upload"
             value="Upload Selected Files" />
Run Code Online (Sandbox Code Playgroud)

控制器:

    [HttpPost]
    public IActionResult UploadFilesAjax()
    {
        long size = 0;
        var files = Request.Form.Files;
        foreach (var file in files)
        {
            var filename = ContentDispositionHeaderValue
                                            .Parse(file.ContentDisposition)
                                            .FileName
                                            .Trim('"');
            filename = hostingEnv.WebRootPath + $@"\{filename}";
            size += file.Length;
            using (FileStream fs = System.IO.File.Create(filename))
            {
                file.CopyTo(fs);
                fs.Flush();
            }
        }
        string message = $"{files.Count} file(s) / {size} bytes uploaded successfully!";

        return Json(message);

    }
Run Code Online (Sandbox Code Playgroud)

Javascript:

@section Scripts {
<script type="text/javascript">
    j(document).ready(function () {
        j("#upload").click(function (evt) {
            var fileUpload = $("#files").get(0);
            var files = fileUpload.files;
            var data = new FormData();
            for (var i = 0; i < files.length ; i++) {
                data.append(files[i].name, files[i]);
            }
            $.ajax({
                type: "POST",
                url: "/Exemplos/UploadFilesAjax",
                contentType: false,
                processData: false,
                data: data,
                success: function (message) {
                    alert(message);
                },
                error: function (e) {

                    alert("There was error uploading files!");
                }
            });
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

Vij*_*han 5

正如我在你的 POST 方法中注意到的那样,没有打开到你定义的 URL 的路由。请将路由添加到 HttpPost 属性。它看起来像下面,

[HttpPost("/Exemplos/UploadFilesAjax")]
public IActionResult UploadFilesAjax()
{
    long size = 0;
    var files = Request.Form.Files;
    foreach (var file in files)
    {
        var filename = ContentDispositionHeaderValue
                                        .Parse(file.ContentDisposition)
                                        .FileName
                                        .Trim('"');
        filename = hostingEnv.WebRootPath + $@"\{filename}";
        size += file.Length;
        using (FileStream fs = System.IO.File.Create(filename))
        {
            file.CopyTo(fs);
            fs.Flush();
        }
    }
    string message = $"{files.Count} file(s) / {size} bytes uploaded successfully!";

    return Json(message);

}
Run Code Online (Sandbox Code Playgroud)