标签:php laravel-5 zipper ziparchive
我使用Laravel 5.2和Zipper来创建ZIP存档并由用户下载.我认为这个问题通常与Laravel或Zipper没有严格的关系.脚步:
>用户点击链接download_all.
>第一个php脚本创建存档.
>接下来,相同的脚本推送创建的文件以强制用户下载.
一切听起来都很正常,但我有奇怪的行为,创建zip存档后(第2点)php / server无法看到这个新创建的文件.
$filePath上的filesize和file_exists都返回false但文件存在.我不能读文件为什么?
当我将用户重定向到$filePath(而不是阅读它并推送下载)时,一切正常,用户获取文件.但为什么我不能在“脚本生命周期”中访问新创建的文件? $path是正确的.
在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();
– > close()方法
不幸的是,在Zipper文档中没有明确提到这一点.
标签:php,laravel-5,zipper,ziparchive 来源: https://codeday.me/bug/20190706/1393110.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。