没有不值得去解决的问题,也没有不值得去学习的技术!

在 Windows 10 中,一个 ZIP 压缩文件(基于 ZipStream PHP),基于 360 压缩解压成功,基于 WinRAR 解压缩失败

参考:在 Laravel 6 中基于 ZipStream PHP ,将 zip 文件流式传输到 S3 存储桶。参考:在 PHP 7.4 中基于 fopen 生成一个流资源,操作了磁盘,调整为完全基于内存的实现。基于 360 压缩解压成功,基于 WinRAR 解压缩失败。
1、参考:在 Laravel 6 中基于 ZipStream PHP ,将 zip 文件流式传输到 S3 存储桶。参考:在 PHP 7.4 中基于 fopen 生成一个流资源,操作了磁盘,调整为完全基于内存的实现。基于 360 压缩解压成功,基于 WinRAR 解压缩失败。如图1
参考:在 Laravel 6 中基于 ZipStream PHP ,将 zip 文件流式传输到 S3 存储桶。参考:在 PHP 7.4 中基于 fopen 生成一个流资源,操作了磁盘,调整为完全基于内存的实现。基于 360 压缩解压成功,基于 WinRAR 解压缩失败。
图1
2、在 Linux 上用 7z 进行解压,虽然能解压出来,但是其实还是有报错信息。如图2
在 Linux 上用 7z 进行解压,虽然能解压出来,但是其实还是有报错信息
图2


ERRORS:
Unexpected end of archive

--
Path = assets_new.zip
Type = zip
ERRORS:
Unexpected end of archive
Physical Size = 781844



Archives with Errors: 1

Open Errors: 1


3、参考:https://maennchen.dev/ZipStream-PHP/guide/FlySystem.html 。在上传流之前,需要先执行:$zip->finish(); 调整前:


        $name = $this->themeInstallationTask->themeInstallation->theme_id . '/assets.zip';

        $stream = fopen('php://memory', 'w+');
        $options = new Archive();
        $options->setOutputStream($stream);
        $zip = new ZipStream($name, $options);

		$zip->addFile(str_replace('\\', '/', str_replace(self::$destination . '/', '', $file->getPathname())), $file->getContents());

        Storage::disk(config('theme_asset.filesystem.disk'))->putStream(
            $name,
            $stream,
            config('theme_asset.filesystem.options')
        );
		
		$zip->finish();
        fclose($stream);


调整后:


        $name = $this->themeInstallationTask->themeInstallation->theme_id . '/assets.zip';

        $stream = fopen('php://memory', 'w+');
        $options = new Archive();
        $options->setOutputStream($stream);
        $zip = new ZipStream($name, $options);

		$zip->addFile(str_replace('\\', '/', str_replace(self::$destination . '/', '', $file->getPathname())), $file->getContents());

        $zip->finish();

        Storage::disk(config('theme_asset.filesystem.disk'))->putStream(
            $name,
            $stream,
            config('theme_asset.filesystem.options')
        );
		
        fclose($stream);


4、基于 360 压缩解压成功,基于 WinRAR 解压缩成功。

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理