Cannot save image intervention image. NotWritableException in Image.php line 138

arkhamDev

Im trying to save a manipulated image which i will them push to s3.

My code that works This code saves the image directly within the public folder*

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());

    }

}

What i would like to achieve is to be able to save it within a folder of it's own. Firstly what is the best place to store an image for a blog post, within the storage of public folder? But anyway when i do this:

$image->save('blogpost/' . $postId . '/' . $file->getClientOriginalName());

// Or this

$image->save(storage_path('app/blogpost/' . $postId . '/' . $file->getClientOriginalName()));

I get the error:

folder within public

NotWritableException in Image.php line 138: Can't write image data to path (blogpost/146/cars/image.jpg)

or

storage path

NotWritableException in Image.php line 138: Can't write image data to path /code/websites/blog/storage/app/blogpost/146/image.jpg

I've tried

cd storage/app/  
chmod -R 755 blogpost

And it still wont work

Thank you for reading this

arkhamDev

Ok so here is how i solved it, I made the directory first before storing,

Storage::disk('local')->makeDirectory('blogpost/' . $postId);

Once the folder is created i then go on to store the manipulated images like so:

$image->save(storage_path('app/blogpost/' . $postId . '/' . $imageName));

And then pushing the image to S3

$filesystem->put('blogpost/' . $postId . '/' . $imageName, file_get_contents(storage_path('app/blogpost/' . $postId . '/' . $imageName)));

This worked

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related