Liliana hace 4 años
Axios cambia los headers al intentar hacer un peticion PUT con FormData
Hola!
Estoy intentando conectar mi API Laravel-lumen con React (Soy nueva en ambos lenguajes). Estoy usando Axios en React para hacer la conexion, pero al crear el formData me cambia los headers de Content-Type json a multipart/form-data.
Tengo un fomulario de creacion usuarios que incluye una imagen. Ya obtengo la lista de usuarios (GET) y puedo crear (POST), pero no logro conseguir hacer update (PUT).
const data = new FormData(event.target);
if (this.state.selectedFoto != null)
data.append('foto_usuario', this.state.selectedFoto, this.state.selectedFoto.name);
else
data.append('foto_usuario', null);
UserService.updateUser(data, userId).then((response) => {
if (response.Error) {
toast.error(response.Error);
return;
}
const user = response.data;
if (DEBUG_MODE)
console.log(user);
toast.success("El Usuario ha sido editado exitosamente");
}).catch((response) => {
const {error} = response;
toast.error(`Error ${error}`);
if (DEBUG_MODE)
console.error(response);
});
`
Y el servicio de la siguiente manera:
static updateUser(data, userId) {
const url = `${API_BASE_URL}/users/${userId}`;
return axios.put(url, data, {
headers: {'Content-Type': 'application/json'},
});
}
No se si estoy haciendolo mal en React o debo hace alguna modificacion en Lumen tambien :( espero me puedan orientar
Responder 3 respuestas
Hola que tal Liliana,
Espero que todo esté yendo bien en estos tiempos complicados.
Checando de manera rápida, lo que veo que está pasando, es de hecho, lo que usualmente se hace, que es enviar tus datos con el header `multipart`, este `header` es especial y se usa para enviar archivos (no solo texto), en tu caso dado que estás mandando un archivo el header se vería más o menos así:
```
headers: {'Content-Type': 'multipart/form-data' }
```
Hay ocasiones en que también tienes que especificar el `boundary`.
¿Puedes subiar un ejemplo mínimo a Github para ver tu código?
Saludos.
Liliana hace 4 años...
Gracias Alex!
Despues de investigar un buen rato di con la solucion:
Instale el paquete PHP PECL "apfd" en mi servidor y ya pude recibir las peticiones PUT con header multipart/form-data.
Espero le sirva a alguien mas :)
canan hace 2 años...
Buenas, Liliana, te quería preguntar como instalaste la extensión PHP PECL "apfd", estoy teniendo problemas con el header multipart/form-data
Por favor inicia sesión para participar en esta pregunta