2

工作 XHR 请求发送一个设置了所有必需的请求标头的文件。

var upload = function (file) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/Admin/Upload', true);
    xhr.setRequestHeader('X-Filename', file.name);
    xhr.setRequestHeader('pageid', pageid);
    xhr.setRequestHeader('catid', catid);
    xhr.send(file);
}

尝试使以下工作(使用 jQuery 1.7.2)

var xhr = new XMLHttpRequest();

var upload = function (file, xhr) {
    $.ajax
    ({
        url: '/Admin/Upload',
        beforeSend: function (xhr) {
            xhr.setRequestHeader('X-Filename', file.name);
            xhr.setRequestHeader('pageid', pageid);
            xhr.setRequestHeader('catid', catid);

        },
        data: file,
        success: function (data) {

            alert('Load was performed.');
        }

    });
}

更新: 好的,所以我已经取得了一些进展,现在请求实际上命中了操作方法,但是输入流中没有数据并且所有文件键数组都是空的,所以实际的文件数据似乎没有通过. 请求标头通过正常。我认为 (data: file) 与 xhr.send(file) 不同吗?

现在使用这个:

var upload = function (file) 
{
    $.ajax
    ({
        url: "/Admin/Upload",
        headers: { catid: catid, pageid: pageid },
        processData: false,
        data: file,
        success: function (data) {

            alert('Load was performed.');
        }

    });
}
4

1 回答 1

1

尝试也设置contentTypefalsetype'POST'

$.ajax({
    url: "/Admin/Upload",
    type: 'POST',
    headers: { catid: catid, pageid: pageid },
    processData: false,
    contentType: false,
    data: file,
    success: function (data) {
        alert('Load was performed.');
    }
});
于 2012-05-30T02:20:34.493 回答