La información que obtuve por mi pregunta anterior Vuex + Laravel. ¿Por qué axios envía valores pero no ese, que viene con el parámetro del método? funciona solo para situaciones en las que paso solo un argumento en axios. También encontré cómo pasar con éxito varios archivos con un argumento, pero en mi situación, tengo que usar el objeto para poder pasar más de un argumento. Entonces, en lugar de
const response = await axios.post('/posts', data)tengo que usar el siguiente
const response = await axios.post('/posts', { formData:data, body:postBody })Pensé que sería fácil, pero ahora es la quinta hora que no puedo encontrar la solución.
controlador
public function store(Request $request) { $files = $request->all(); return var_dump($files); }Probé muchas cosas, incluidos los experimentos $request->allFiles() y getClientOriginalExtension(). No hay resultados. ¿Qué versiones tienes? ¿Cómo se puede solucionar este problema?
¡Importante! Yo uso Laravel, vuex, axios.
Uso texto que no está en FormData porque es textArea. Y si puedo combinar textarea en FormData para hacer una llamada axios de argumento, de todos modos, sigue siendo muy importante para mí saber cuál es el problema que describí anteriormente.
Actualizado
Aquí está la pestaña de carga útil de Chrome
No está muy claro por qué no envía todo lo que necesita dentro del objeto formData .
Podrías hacer algo como:
const formData = new FormData() formData.append(body, postBody) formData.append(files, fileList) formData.append(otherData, someOtherData) const response = await axios.post('/posts', formData)Luego, en su lado del servidor, podrá hacer
$body = $request->body; $files = $request->files; $otherData = $request->otherData;