Al intentar cargar un archivo CSV / Excel y recibirlo en una solicitud ajax, no funciona como se esperaba.
Usé un objeto formdata para cargar los archivos de esta manera:
const formData = new FormData() formData.append('file', file) //upload the file to the server Api.makeRequest('uploadFromFile', { processData: false, contentType: false, enctype: 'multipart/form-data', cache: false, data: formData, complete: function (xhr) { if(xhr.status === 201 || xhr.status === 200){ console.log(xhr.responseJSON) }else { alert('error') console.error(xhr.responseJSON) } } })Como leí de la documentación, tienes que extraerlo así:
$file = $request ->file('file_key')Cuando uso esta sintaxis, aparece un error y Laravel no puede extraer el archivo:
public function uploadFromFile(Request $request){ if($request->hasFile('file')){ $file = $request->file('file'); return $file; }else{ return response()->json(['error' => 'No file uploaded'], 400); } Sin embargo, funciona bien cuando uso la función regular request->has() . Un tipo de retorno es solo un objeto. ¿Qué estoy haciendo mal ya que no puedo obtener el archivo en el formato correcto?
//This works, getting some data but not a proper file object public function uploadFromFile(Request $request){ if($request->has('file')){ $file = $request->get('file'); return $file; }else{ return response()->json(['error' => 'No file uploaded'], 400); }