ark*_*Dev 8 php image laravel-5
我试图保存一个被操纵的图像,我将他们推到s3.
我的代码有效此代码将图像直接保存在公共文件夹中*
public function store(Filesystem $filesystem)
{
$request = Input::all();
$validator = Validator::make($request, [
'images' => 'image'
]);
if ($validator->fails()) {
return response()->json(['upload' => 'false']);
}
$postId = $request['id'];
$files = $request['file'];
$media = [];
$watermark = Image::make(public_path('img/watermark.png'));
foreach($files as $file) {
$image = Image::make($file->getRealPath());
$image->crop(730, 547);
$image->insert($watermark, 'center');
$image->save($file->getClientOriginalName());
}
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是能够将其保存在自己的文件夹中.首先,在公共文件夹的存储中,为博客文章存储图像的最佳位置是什么?但无论如何当我这样做:
$image->save('blogpost/' . $postId . '/' . $file->getClientOriginalName());
// Or this
$image->save(storage_path('app/blogpost/' . $postId . '/' . $file->getClientOriginalName()));
Run Code Online (Sandbox Code Playgroud)
我收到错误:
公共文件夹
Image.php第138行中的NotWritableException:无法将图像数据写入路径(blogpost/146/cars/image.jpg)
要么
存储路径
Image.php第138行中的NotWritableException:无法将图像数据写入路径/code/websites/blog/storage/app/blogpost/146/image.jpg
我试过了
cd storage/app/
chmod -R 755 blogpost
Run Code Online (Sandbox Code Playgroud)
它仍然无法工作
谢谢您阅读此篇
您可以通过Intervation/Image使用function 将变量强制转换为数据流来解决它stream。然后使用StorageLaravel门面保存图像。
$img = Image::make('path-to-the-image.png')->crop(...)->insert->stream('jpg', 90)
Storage::put('where_I_want_the_image_to_be_stored.jpg', $img);
Run Code Online (Sandbox Code Playgroud)
好的,这就是我如何解决它,我在存储之前先创建了目录,
Storage::disk('local')->makeDirectory('blogpost/' . $postId);
Run Code Online (Sandbox Code Playgroud)
创建文件夹后,我继续存储被操纵的图像,如下所示:
$image->save(storage_path('app/blogpost/' . $postId . '/' . $imageName));
Run Code Online (Sandbox Code Playgroud)
然后将图像推送到S3
$filesystem->put('blogpost/' . $postId . '/' . $imageName, file_get_contents(storage_path('app/blogpost/' . $postId . '/' . $imageName)));
Run Code Online (Sandbox Code Playgroud)
这很有效