w3schools formdata form data javascript http-headers xmlhttprequest form-data mediafire

javascript - w3schools - ¿Cómo agregar datos de encabezado en XMLHttpRequest cuando se usa formdata?



formdata() javascript (3)

Tu error

InvalidStateError: se intentó utilizar un objeto que no es, o ya no es, utilizable

aparece porque debe llamar a setRequestHeader después de llamar a open . Simplemente mueva su línea setRequestHeader debajo de su línea open (pero antes de send ):

xmlhttp.open("POST", url); xmlhttp.setRequestHeader("x-filename", photoId); xmlhttp.send(formData);

Estoy tratando de implementar una API de carga de archivos, dada aquí:
Subir archivo Mediafire

Puedo cargar con éxito los datos de publicación y obtención de datos , pero no tengo idea de cómo enviar el atributo x-filename , que se supone que es información de encabezado como se indica en la guía API.

Mi código :

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);


Utilice: xmlhttp.setRequestHeader(key, value);


Verifique si el par clave-valor se está mostrando en la solicitud:

En Chrome , se encuentra en algún lugar como: F12: Developer Tools > Network Tab > Whatever request you have sent > "view source" under Response Headers

Dependiendo de su flujo de trabajo de prueba, si el par que agregó no está allí, es posible que solo necesite borrar el caché de su navegador. Para verificar que su navegador está usando su código más actualizado, puede verificar las fuentes de la página, en Chrome, se encuentra en algún lugar como: F12: Developer Tools > Sources Tab > YourJavascriptSrc.js y verifique su código.

Pero como han dicho otras respuestas:

xhttp.setRequestHeader(key, value);

debe agregar un par clave-valor a su encabezado de solicitud, solo asegúrese de colocarlo después de open() y antes de send()