NotWritableException无法将图像数据写入heroku上的路径

时间:2018-05-24 10:29:21

标签: laravel heroku laravel-5 laravel-5.5

我正在尝试将图像数据保存到文件夹中。它在我的localhost上工作正常,但是当我将它移动到heroku时它给了我这个错误

NotWritableException
Can't write image data to path (https://arcane-peak- 
34431.herokuapp.com/public/images/categories/1527155055.jpg)

这是我的代码。

$image = $request->file('image');
    $imagename = $image->getClientOriginalExtension();
    $imagename = time().'.'.$imagename;

    $destinationPath = URL::to('public/images/restaurants');
    $img = Image::make($image->getRealPath());

    $img->resize(100, 100, function ($constraint) {
        $constraint->aspectRatio();
    })->save($destinationPath.'/'.$imagename);

    $destinationPath = URL::to('public/images/restaurants');

    $image->move($destinationPath, $imagename);

我做错了什么?而且在我的本地机器上,上传的图像正在保存,但我想要保存已调整大小的图像。任何帮助都将是一个救生员

1 个答案:

答案 0 :(得分:1)

更大的问题是即使你让你的图像保存它也会消失。 Heroku使用ephemeral filesystem(粗体添加):

  

每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,任何写入的文件都将被丢弃。例如,每次因应用程序部署而更换dyno时都会发生这种情况,并且大约每天一次作为正常dyno管理的一部分。

Heroku recommends使用Amazon S3等第三方服务存储用户上传。