60

ここにあるファイルアップロードAPIを実装しようとしています:
Mediafire file Upload

Post dataGet dataを正常にアップロードできましたが、 x-filename属性を送信する方法がわかりません。これは、API ガイドに記載されているヘッダー データを意味します。

私のコード:

xmlhttp=new XMLHttpRequest();
var formData = new FormData();

formData.append("Filedata", document.getElementById("myFile").files[0]);

var photoId = getCookie("user");
// formData.append("x-filename", photoId);            //tried this but doesn't work
// xmlhttp.setRequestHeader("x-filename", photoId);   //tried this too (gives error) [edited after diodeous' answer]

xmlhttp.onreadystatechange=function()
{
    alert("xhr status : "+xmlhttp.readyState);
}

var url = "http://www.mediafire.com/api/upload/upload.php?"+"session_token="+getCookie("mSession")+"&action_on_duplicate=keep";

xmlhttp.open("POST", url);
// xmlhttp.setRequestHeader("x-filename", photoId);   //tried this too, doesnt work. Infact nothing gets uploaded on mediafire.  [edited after apsillers' answer]
// cant get response due to same origin policy
xmlhttp.send(formData);
4

3 に答える 3

107

あなたのエラー

InvalidStateError: 使用できない、または使用できなくなったオブジェクトを使用しようとしました

setRequestHeader を呼び出した後に呼び出す必要があるため、 が表示されますopensetRequestHeader行を行の下に移動するだけですopen(ただし、前にsend):

xmlhttp.open("POST", url);
xmlhttp.setRequestHeader("x-filename", photoId);
xmlhttp.send(formData);
于 2013-10-29T15:15:03.990 に答える
37

使用する:xmlhttp.setRequestHeader(key, value);

于 2013-10-29T14:40:05.957 に答える