加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP无法访问新创建的zip文件

发布时间:2020-12-13 16:06:15 所属栏目:PHP教程 来源:网络整理
导读:我使用Laravel 5.2和 Zipper来创建ZIP存档并由用户下载.我认为这个问题通常与Laravel或Zipper没有严格的关系.脚步: 用户点击链接download_all. 第一个php脚本创建存档. 接下来,相同的脚本推送创建的文件以强制用户下载. 一切听起来都很正常,但我有奇怪的行
我使用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文档中没有明确提到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读