为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 和干预/图像:将照片上传到 AWS S3 存储桶会导致 0 字节文件

Laravel 和干预/图像:将照片上传到 AWS S3 存储桶会导致 0 字节文件

PHP
偶然的你 2022-10-28 14:46:14
我将http://image.intervention.io/与 Laravel 一起使用来调整图像大小,然后再将它们存储在 AWS S3 存储桶中。这是适用的代码:$extension = $image->extension();$realPath = $image->getRealPath();$resizedImage = Image::make($realPath) // ->resize(255, 255); // resize or not, make() seems to always return an empty Image$file_path = "posts/$post->id/images/image-$post->id-num-$pictureCount.$extension/"; $path = Storage::disk('s3')->put($file_path, $resizedImage->__toString(), ['visibility' => 'public']);调试时($path设置了行上的断点),我可以看到它$realPath的值类似于/private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T/php9047Fh- 并且去那里我可以看到我正在尝试make()/的图像resize()。该$resizedImage对象具有以下字段:[encoded] => [mime] => image/jpeg[dirname] => /private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T[basename] => phpTNRdXe[extension] => [filename] => phpTNRdXe我猜编码的属性应该包含基本 64 位图像数据之类的东西?检查 AWS S3 存储桶中的图像时,它总是作为 0 字节的图像上传。我在这里做错了什么?干预配置为使用 GD,如果它有任何区别
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

Laravel File 类Symfony File 类的子类,后者又是子类\ SplFileInfo

文件对象可以直接传入Image::makeImage::make 获取realPathfor\SplFileInfo对象。

Image::make 返回Image的一个实例并$resizedImage->__toString()返回其encoded字段的值。encoded空字符串开始。

图像应该在访问其编码值之前进行编码

$resizedImage->encode();

然后,

$path = Storage::disk('s3')->put($file_path, $resizedImage->__toString(), ['visibility' => 'public']);


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信