Файл возврата PhpSpreadsheet вместо сохранения - PullRequest
0 голосов
/ 13 мая 2018

Я сгенерировал файл xmlx, и я могу сохранить его и предоставить пользователю через:

$writer->save('hello world.xlsx');
header('Location: hello world.xlsx');

Однако тогда файл остается на жестком диске.Мне нужно избавиться от него, так как это угроза безопасности.

Я попытался отсоединить файл

unlink('hello world.xlsx');

, но это удаляет файл на ранней стадии, поэтому у пользователя нет доступа к нему.,Если он может работать с unlink, тогда я должен быть уверен, что файл будет удален (поэтому правильно использовать die(); и тому подобное)

EDIT: Это больше не только из соображений безопасности,Поставщик не позволяет сохранять файлы, поэтому это единственный путь.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Использование php://output

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="file.xls"');
$writer->save("php://output");
0 голосов
/ 13 мая 2018

Вы можете отправить файл сразу после его создания, вместо перенаправления в файл.

$filename = 'hello world.xlsx';
$writer->save($filename);

// Set the content-type:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($filename));
readfile($filename); // send file
unlink($filename); // delete file
exit;
...