Laravel 5.4 中的 Zipstream - 数据已损坏

Posted

技术标签:

【中文标题】Laravel 5.4 中的 Zipstream - 数据已损坏【英文标题】:Zipstream in Laravel 5.4 - Data is corrupted 【发布时间】:2017-08-29 15:58:43 【问题描述】:

我正在使用该方法生成一个示例 zip 文件。

不幸的是,zip 文件的输出没有解压缩到预期的输入。

public function generateZip(Request $req)  
    $response = new StreamedResponse(function()
    
        $opt = array(

            'comment' => 'test zip file.',
            'send_headers'=>true,
        );

        $zip = new ZipStream\ZipStream('example.zip');

        # create a file named 'hello.txt' 
        $zip->addFile('hello.txt', 'This is the contents of hello.txt');


        # finish the zip stream
        $zip->finish();
     );


    return $response;

文件生成example.zip,解压文件后解压“hello.txt”,但内容是一个空白的新行

…»,V¢íåTÖ‰¸ºí‘ºíbÖ¸4Öå‘úú|Ωíä

我的努力是基于以下代码:

Using ZipStream in Symfony: streamed zip download will not decompress using Archive Utility on Mac OSX

我的调试步骤是这样开始的:

1) 尝试使用 Amazon S3 流生成 zip 文件

2) 修改设置,移除压缩

3) 将问题隔离为最简单的结果

4) 添加输出缓冲和输出刷新以尝试拦截任何输出。

我的路线是这样的:

Route::get("/generate-zip", 'myController@generateZip');

【问题讨论】:

【参考方案1】:

不幸的是,我的问题与图书馆无关。我(我认为)不小心在 /vendor 中保存了一个文件,其中包含一些额外的代码。擦拭供应商文件夹并重新安装就可以了。

【讨论】:

以上是关于Laravel 5.4 中的 Zipstream - 数据已损坏的主要内容,如果未能解决你的问题,请参考以下文章

laravel 5.4 中的 API 验证

Laravel Session 总是改变 Laravel 5.4 中的每个刷新/请求

laravel 5.4中的动态播种

Laravel 5.4 上 Manager.php 第 139 行中的 FatalErrorException

LARAVEL 5.4:ValidatePostSize.php 中的 PostTooLargeException(第 24 行)

laravel 5.4 数据库中的表单下拉列表