0

我在这里对 Laravel 5 中的 Storage VS Public 路径感到有些困惑> ...我的理解是应该使用Storage::而不是File::将文件写入 Storage 文件夹,以预见使用 Amazon 等云服务。所以我正在尝试storage/app使用干预和此代码将 jpg 放入文件夹中:

 public function apply(Request $request)
    {

        $user = Auth::user();

        $path = '/users/'.$user->id;

        if (!Storage::exists($path))
        {
            Storage::makeDirectory ($path, $mode = 0755, $recursive = false, $force = false);;
        }


                Image::make($request->file('image'))
                    ->orientate()
                    ->resize(600, null, function ($constraint) {
                        $constraint->aspectRatio();
                    })
                    ->resizeCanvas(600, 600, 'center', false, 'ffffff')
                    ->save($path.'/foo.jpg');


    }

首先,我不确定是否!Storage::exists($path)会做任何事情,因为存储 API 告诉它不会检查目录,那么我应该如何检查目录是否存在?第二dd(is_writable($path));返回 false,并且确实运行该代码会导致

NotWritableException in Image.php line 143:
Can't write image data to path

错误。那么这应该怎么做呢?

4

1 回答 1

1

我使用的“技巧”是直接在临时路径中操作图像,然后使用 Laravel 存储方法将其保存在存储文件夹中。

$tempFile = $request->file('image')->getRealPath(); 

Image::make($tempFile)
    ->resize(100, 100)
    ->save($tempFile); // Note that we are saving back to temporary path

// Now we can proceed and send the manipulated file to it's final destination
// in '/storage/app/public/uploads'
$path = $request->file('image')->storePublicly('public/uploads');
于 2016-09-13T19:44:00.837 回答