Создайте и загрузите CSV-файл через Axios с помощью Laravel 9.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Создайте и загрузите CSV-файл через Axios с помощью Laravel 9.

Сообщение Anonymous »

Я работаю с Laravel 9.
Из Axios я вызываю маршрут, который генерирует массив массивов, для создания CSV. Как я могу загрузить CSV-файл без необходимости предварительно сохранять его на сервере?
С помощью следующего кода я могу сгенерировать и загрузить его, исправить формат CSV, и он занимает около 14 КБ. Но я не могу открыть его ни в одной программе (excel, vscode,блокнот...), думаю, из-за проблем с кодировкой ¿?.
на сервере:

Код: Выделить всё

$full = array_merge($header,$lines);

$headers = array(
"Content-type" => "text/csv",
"Content-Disposition" => "attachment; filename=file.csv",
"Pragma" => "no-cache",
"Content-Encoding" => "UTF-8",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
);

$callback = function() use($full) {
$file = fopen('php://output', 'w');
//fputs($file, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); same result
fputcsv($file, $full);
fclose($file);
};

return response()->stream($callback, 200, $headers);
И вызов axios на клиенте:

Код: Выделить всё

axios.post('{{ route("shiple.table") }}', filters)
.then(function (response) {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.csv');
document.body.appendChild(link);
link.click();
})
.catch(function (error) {
console.log(error);

});
Если я открою его с помощью блокнота, он будет выглядеть зашифрованным: Ï à¡± á ; þÿ

Подробнее здесь: https://stackoverflow.com/questions/761 ... -laravel-9
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»