I'm mencoba untuk menerapkan upload file API, yang diberikan di sini :
Mediafire Upload file
Saya berhasil dapat meng-upload data Post & Mendapatkan data, tapi tidak memiliki petunjuk bagaimana untuk mengirim x-file atribut, yang dimaksudkan untuk menjadi Header data seperti yang diberikan dalam panduan API.
Kode Saya :
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);
Kesalahan anda
InvalidStateError: upaya Yang dilakukan untuk menggunakan sebuah objek yang tidak, atau tidak lagi, dapat digunakan
muncul karena anda harus memanggil setRequestHeader
setelah memanggil terbuka
. Hanya memindahkan setRequestHeader
garis bawah terbuka
line (tapi sebelum kirim
):
xmlhttp.open("POST", url);
xmlhttp.setRequestHeader("x-filename", photoId);
xmlhttp.send(formData);
Periksa untuk melihat jika pasangan key-value adalah benar-benar muncul dalam permintaan:
Di Chrome, ditemukan di suatu tempat seperti: F12: Alat Pengembang > Jaringan Tab > Apapun permintaan anda telah terkirim > "lihat sumber" di bawah Header Respon
Tergantung pada anda pengujian alur kerja, jika apapun yang pasangan anda menambahkan isn't ada, anda mungkin hanya perlu untuk menghapus cache browser anda. Untuk memverifikasi bahwa browser anda menggunakan paling up-to-date kode, anda dapat memeriksa halaman's sumber, di Chrome ini adalah yang ditemukan di suatu tempat seperti:
F12: Alat Pengembang > Sumber Tab > YourJavascriptSrc.js
dan memeriksa kode anda.
Tetapi sebagai jawaban yang lain telah mengatakan:
xhttp.setRequestHeader(key, value);
harus menambahkan pasangan key-value untuk anda request header, pastikan untuk menempatkannya setelah anda open()
dan sebelum anda send()