首页 文章

将上传的图像文件保存在公共目录中不在laravel 5.6中工作

提问于
浏览
0

我创建了一个指定的位置来存储所有上传的图像在公共目录中,如下所示:

enter image description here

我有这样的公共驱动程序的默认 config/filesystem.php

'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

在我的存储库中,我试图像这样保存上传的图像:

// ... snipped        

    if (array_key_exists('logo', $validated)) {
        $logoPath = $validated['logo']->store(
            'uploads/logos',
            'public'
        );
        $company->logo = url($logoPath);
    }

    $company->save();

在数据库中,我可以看到公司记录的 logo 字段的值,如下所示: http://my-app.local/uploads/logos/3hlsAhnnIPjd4zhdpfhvKw4tqDkpcCz23NczwhVM.png

但是, public/uploads/logos 目录是空的 . 知道这里可能有什么问题吗?我应该在 UploadedFile 而不是 ->store() 上使用 ->move() 方法吗?

2 回答

  • 0

    您可以使用其他方法在公共目录中上载图像 .

    $request->validate([
        'logo' => 'image|required',
    ]);
    
    if($request->hasFile('logo')){
       $company->logo = $request->image->move('uploads/logo', $request->logo->hashName());
    }
    $company->save()
    
  • 0

    实际上,是的,这是你的错,但不是你刚才找到的那个 . 默认情况下,laravel本地存储指向 storage/app/public 目录,因为laravel希望您采取专业行动并将所有上传的文件存储在存储中,而不是存储在某种公共目录中 . 但是你会问 - 地球上的用户应该如何直接访问非公共存储?并且有一个被捕获的 php artisan storage:link 命令 . 它创建从公共目录到存储目录的符号链接( storage/app/public - > public/storage ) . 这主要是因为部署和版本管理 .

相关问题