【问题标题】:PHP zipping files without saving to local directoryPHP压缩文件而不保存到本地目录
【发布时间】:2018-10-18 10:12:28
【问题描述】:

我想使用 Laravel 压缩一些图像,但我不知道如何在不先存储到本地目录的情况下压缩这些图像。是否可以这样做而不将它们保存到我的本地目录?我在本地机器上运行 PHP 7.1。

来自ZipArchive 的官方文档,如果文件已经存储在本地目录中,则只能将其添加到 zip 中。

这是我压缩单个图像的代码的一些 sn-ps:

Use Image;
Use ZipArchive();
$image = Image::make('http://example-image.com');
$zip = new ZipArchive();
$zip->addFile($image, 'image-filename');

预期行为:图像将插入到$zip

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你想上传一张图片,压缩它并存储在某个地方吗?
  • @SalimIbrogimov 我想将它作为压缩文件存储在我的 AWS S3 中。
  • 您有两种选择:1. 在上传之前压缩文件,或者 2. 上传文件然后压缩。
  • @SalimIbrogimov 是的兄弟,你的第一个选择是我的问题。上传到 S3 后是否可以压缩文件?

标签: php laravel ziparchive


【解决方案1】:

尝试使用addFromString

$zip->addFromString('image-filename.png', $image->encode('png'));

$zip->addFromString('image-filename.png', $image->encode('jpg', $quality));

【讨论】:

  • 这行不通。你试过了吗?我得到了Error 500: Command (Get) is not available for driver (Gd)
  • 不,我没有尝试过,我不使用 Laravel,我假设您正在使用另一个库。我已经更新了答案,以便可以使用 Intervention library
【解决方案2】:

试试:

$zip->addFile($_FILE['tmp_name'], $_FILE['name']);

从临时位置添加到 zip

【讨论】:

  • 我没有处理来自 HTTP POST 数据的上传图像。这是一个有效的图片网址。
猜你喜欢
  • 2012-05-29
  • 2018-03-22
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 2013-12-29
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多