4
使用Laravel 5.2和Zipper即時創建ZIP歸檔並由用戶下載。我認爲這個問題一般與Laravel或Zipper沒有嚴格關係。步驟:PHP無法訪問新創建的zip文件
- 用戶點擊鏈接download_all。
- 第一個php腳本創建存檔。
- 接下來將同一個腳本推送創建的文件強制用戶下載。
一切聽起來正常,但我有奇怪的行爲所創建zip壓縮包後(2點)PHP /服務器不能看到這個新創建的文件。 $ filePath上的文件大小和file_exists都返回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);
}
您是否添加了需要下載的標題? –
是的,當然,上面的代碼編輯 – Adiasz
這不是一個AJAX調用,對吧? –