Que estoy haciendo:
Los datos que quiero imprimir en el archivo csv se envían a un backend PHP/laravel desde un frontend JS/vue
Los datos se envían a través de una solicitud axios.post a una función de controlador de laravel
Qué ocurre
El archivo csv no se descarga cuando se presiona la función (todos los datos se reciben en el backend)
Qué esta pasando
En lugar de descargar un archivo CSV, la función simplemente devuelve los datos
Aquí estoy yo enviando datos al backend
printReport() { axios.post('/admin/assignments/printReportData', { 'assignments': this.reportAssignments, 'users': this.reportUsers }) }La función de backend está siendo golpeada
public function printReportData(Request $request) { $assignments = $request->assignments; $users = $request->users; header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=sales-by-item-per-customer' . date('YmdHi') . '.csv'); $output = fopen("php://output", "w"); fputs($output, $bom = (chr(0xEF) . chr(0xBB) . chr(0xBF))); foreach ($assignments as $assignment) { fputcsv($output, [$assignment['name']]); foreach ($users as $user) { //get all user ids in specific assignment responses array $userIdArray = array_column($assignment['response'], 'user_id'); //get array of current assignment response if (in_array($user['id'], $userIdArray)) { fputcsv($output, [$assignment['name'], $user['name'], 'Completed']); } else { fputcsv($output, [$assignment['name'], $user['name'], 'Not Complete']); } } } fclose($output); }Después de presionar la función anterior, los datos se repiten y se devuelven; puedo verlo a través de las herramientas de desarrollo
El CSV nunca se descarga
lo que he intentado
Traté de forzar la descarga de diferentes maneras:
después de fclose($salida); he intentado exit(); y muere(); pero nada ha forzado el inicio de la descarga
El código de back-end en la función anterior funcionó en una carga de página completa, pero no cuando intento hacerlo a través de axios