javascript - 发送 XMLHttpRequest 未与 Controller 方法绑定(bind)

标签 javascript c# asp.net-mvc razor asp.net-mvc-5

我有以下 JavaScript 来为上传过程设置进度条

$(document).ready(function () {
    $("#uploadButton").click(function (event) {
        var http = new XMLHttpRequest();
        var data = new FormData();
        var files = $("#fileSelector").get(0).files;
        //data.append(files[0].name, files[0]);
        for (var i = 0; i < files.length; i++) {
            data.append(files[i].name, files[i]);
        }
        http.upload.addEventListener("progress", progressHandler, false);
        http.addEventListener("load", completeHandler, false);
        http.open("POST", "./Tools/Upload");
        http.send(data);
        event.preventDefault();
    });
});
function progressHandler(event) {
    var percent = (event.loaded / event.total) * 100;
    $('.bar').width(percent);
}
function completeHandler() {
    $('.bar').width(100);
}

Controller 方法是

[HttpPost]
public async Task<ActionResult> Upload(HttpContext context) { ... }

现在,当我单击按钮时,JavaScript 会启动,并且我可以在 data FormData 对象中看到文件名。但是,我得到了

HTTP/1.1 500 Internal Server Error

当我将方法签名更改为

[HttpPost]
public async Task<ActionResult> Upload(IEnumerable<HttpPostedFileBase> files) { ... }

该方法被调用,但 files 参数为空。

我的 http.send(data); 调用应该使用什么参数类型?

感谢您的宝贵时间。

最佳答案

请使用正确的请求 header 更新您的代码。

http.setRequestHeader("Content-type", "multipart/form-data");

关于javascript - 发送 XMLHttpRequest 未与 Controller 方法绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619382/

相关文章:

javascript - laravel 中的 GPS 位置跟踪

c# - MassTransit/RabbitMq 错误队列 - 如何删除消息?

c# - 如何在进行重定向之前确保 Controller 和操作存在,asp.net mvc3

c# - 如何避免sql死锁?

asp.net-mvc - 对未经身份验证的用户和 AJAX 调用的不同响应

javascript - 如何使 jQuery 单击事件恢复到原来的状态?

javascript - 更多 div 中的 DOM 元素的 jquery 更改属性?

c# - 如何从外部文件读取 XML appSettings?

javascript - 将文本附加到单个文本区域 - 按段落分隔(使用 javascript)

c# - 在 C# 中打印数组/列表到 Excel