0
我試圖獲得ZipStream在Laravel 5.4中工作。我想從s3流文件來創建一個ZipStream,它返回到瀏覽器。Laravel Zipstream從流中添加文件
目前我的代碼會生成與有效ZIP文件大小相同的損壞ZIP文件。
這是我的操作方法:
public function mediaZip(User $user)
{
return response()->stream(function() use ($user) {
$zip = new ZipStream($user->name . ".zip", [
'content_type' => 'application/octet-stream'
]);
foreach ($user->media as $medium) {
$stream = Storage::disk("s3")->readStream($medium->location);
$zip->addFileFromStream($medium->name, $stream);
}
$zip->finish();
});
}
如果我用下面的代碼讀取每個文件到內存,ZIP文件做工精細。然而,這是不受歡迎的,因爲我將使用幾千兆字節大小的文件。
public function mediaZip(User $user)
{
return response()->stream(function() use ($user) {
$zip = new ZipStream($user->name . ".zip", [
'content_type' => 'application/octet-stream'
]);
foreach ($user->media as $medium) {
$file = Storage::disk("s3")->read($medium->location);
$zip->addFile($medium->name, $file);
}
$zip->finish();
});
}
任何人都可以幫我弄清楚ZIP文件出了什麼問題嗎?
謝謝!