Я использую Laravel 5.2 и Молния создать ZIP-архив на лету и скачать его пользователем. Я думаю, что эта проблема в целом не связана строго с Laravel или Zipper. шаги:
Все звучит нормально, но у меня странное поведение, что после создания zip-архива (пункт 2) php / server не могу увидеть этот недавно созданный файл.
И fileize, и file_exists в $ filePath возвращают false, но файл существует. Я не могу прочитать файл Зачем?
Когда я перенаправляю пользователя в $ filePath (вместо того, чтобы читать и нажимать на загрузку), все в порядке, и пользователь получает файл. Но почему я не могу получить доступ к вновь созданному файлу во время «жизни скрипта»? $ пути верны.
Проверено на Windows 7 и Unix.
Любая идея?
код:
public function downloadAll($id)
{
$sourceFilesDir = 'upload/source/' . $id;
$zipPath = 'upload/source-zip/' . date('Y-m-d-H-i-s') . '.zip';
Zipper::make($zipPath)->add($sourceFilesDir);
$fullPath = public_path($zipPath);
// works
// return response()->redirectTo($zipPath);
$headers = [
'Content-Type: application/zip',
'Content-Transfer-Encoding: Binary',
'Content-Length: ' . filesize($fullPath),
];
// dont works, cant see file
return response()->download($fullPath, basename($zipPath), $headers);
}
Говорят @Holger.
Молния должна быть закрыто сохранить файл.
Правильный код:
Zipper::make($zipPath)->add($sourceFilesDir)->close();
-> Закрыть ()
К сожалению, в документах Zipper это не упоминается четко.
Других решений пока нет …