Laravel 5 — PHP не может получить доступ к вновь созданному zip-файлу

Я использую Laravel 5.2 и Молния создать ZIP-архив на лету и скачать его пользователем. Я думаю, что эта проблема в целом не связана строго с Laravel или Zipper. шаги:

  1. Пользователь нажимает на ссылку скачать все.
  2. Первый скрипт php создает архив.
  3. Далее тот же скрипт нажимает созданный файл, чтобы принудительно загрузить пользователя.

Все звучит нормально, но у меня странное поведение, что после создания 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);
}

4

Решение

Говорят @Holger.
Молния должна быть закрыто сохранить файл.

Правильный код:

Zipper::make($zipPath)->add($sourceFilesDir)->close();

-> Закрыть ()

К сожалению, в документах Zipper это не упоминается четко.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]