Estoy tratando de enviar un archivo a mi back-end a través de una solicitud de publicación de axios.
Este es el error que tengo actualmente:
cherrypy._cperror.HTTPError: (415, 'Se esperaba una entidad de tipo de contenido application/json, text/javascript')
Por lo que he leído, necesito cambiar el tipo de contenido en mi solicitud de publicación, miré a mi alrededor y actualmente estoy intentando hacerlo así:
handleUploadButton(e){ const upload_file = this.state.file; const formData = new FormData(); formData.append('file', upload_file); const request = axios.post(someUrl, formData, {headers: { "Content-Type": "application/json"} }) .then(function (response) { console.log('successfully uploaded', upload_file); }); }No estoy seguro de si es relevante, pero todo esto sucede a través de un formulario de reactjs. Este es mi Tipo de contenido actual: Tipo de contenido: multipart/form-data; límite=----WebKitFormBoundaryBwjjjGuJEySeXdRU
No tengo ni idea de dónde ir desde aquí. Cualquier ayuda sería muy apreciada.
SignIn = () => { console.log('login clicked') let data = JSON.stringify({ password: this.state.password, username: this.state.email }) axios.post('url', data, { headers: { 'Content-Type': 'application/json', } } ) }Esto funcionó para mí:
const formData = new FormData(); formData.append('data', new Blob([JSON.stringify(data)], { type: 'application/json'})); formData.append('file', file); return axios.put(`${url}`, formData) .then((response) => { console.log(response) }) .catch((error) => { console.log(error) })Tomé esto de otra respuesta de un problema similar. Puedes consultar la respuesta original aquí .
Puede corregir diferentes tipos de error catch () por
.catch((error)=> { if (error.response){ this.errors(error.response.message); } else if (error.request) { console.log('error.request'); } else { console.log('Error', error); } console.log("rejected"); });