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.');
        }

    });
}

更新: わかりました。少し進んで、リクエストが実際にアクション メソッドにヒットしましたが、入力ストリームにデータがなく、すべてのファイル キー配列が null であるため、実際のファイル データは通過していないようです。 . リクエストヘッダーは問題なく通過しています。(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

とにも設定contentTypeしてみてください。falsetype'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 に答える