laravel - Laravel 8图像干预:无法将图像数据写入路径
问题描述
这就是我尝试使用image intervention
包的方式:
public function saveImage(string $path, $image)
{
$file = $image;
$filename = Str::random(20) . $file->getClientOriginalName();
$imgResize = Image::make($image);
$imgResize->heighten(300);
//dd(is_writable(storage_path('app/public/'.$path)));
$imgResize->save(storage_path('app/public/'.$path));
return $destination_path = Storage::disk('local')->put('/'.$path, $image);
}
图像保存成功,无需使用图像干预。当我尝试save()
它时,它会抛出这个错误:
Intervention\Image\Exception\NotWritableException: Can't write image data to path
.
我已经更改了文件夹的权限,但仍然无法正常工作。
知道是什么原因造成的吗?
编辑:
我之前做过php artisan storage:link
,这就是它在不使用图像干预的情况下工作的原因。
我这样做dd(storage_path('app/public/'.$path));
导致正常图像成功保存在同一个文件夹中。
我还检查了是否is_writable
,结果是true
。
仅出于测试目的,我已经将权限更改为777
.
我不知道还能做些什么来完成这项工作。
解决方案
save()
在方法中添加文件名
$imgResize->save(storage_path('app/public/'.$path.'/'.$filename));
这里有一些来自干预站点文档的例子
// 打开一个图像文件并调整其大小 $img = Image::make('public/foo.jpg')->resize(300, 200);
// 将文件保存为中等质量的 jpg $img->save('public/bar.jpg', 60);
// 以默认质量将相同的文件保存为 jpg $img->save('public/baz.jpg');
// 以 png 格式保存文件 $img->save('public/bar.png');
// 保存第三个参数定义的图片jpg格式 $img->save('public/foo', 80, 'jpg');
推荐阅读
- stackdriver - 如何将旧数据添加到 GCP stackdriver 上新创建的指标中?
- python - CGI - HTML 到 python
- assembly - 操作数必须是可重定位的程序集 x86 问题
- php - 我可以根据 URL 显示单一视图的不同部分吗?
- apache-kafka - 如何获取 Apache kafka 正在使用的配置文件名
- json - 使用数组解组 JSON
- powershell - 在 powershell 脚本中为 Nintex 设置凭据以迁移到 O365
- c# - 我在字符串的末尾得到了价值
- php - 从 URL 运行脚本时来自 cpanel 重新调整错误的 Cron 作业没有重新运行任何错误
- opencv - OpenMP 的结果令人失望