php zip 不能创建文件,PHP无法访问新创建的zip文件

我使用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文档中没有明确提到这一点.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值