我把用户的头像上传到了Laravel存储器里。我如何访问它们并在视图中呈现它们?

服务器将所有请求指向/public,那么如果它们在/storage文件夹中,我如何显示它们?


当前回答

如果磁盘“本地”不适合你,那么试试这个:

将'default' => env('FILESYSTEM_DRIVER', 'public')中的local更改为public, from project_folder/config/ filessystem .php 清除配置缓存php工匠配置:清除 然后创建sym link php artisan storage:link

要获取上传图像的url,您可以使用这个Storage::url('image_name.jpg');

其他回答

根据Laravel 5.2文档,你的公共可访问文件应该放在目录中

storage/app/public

为了使它们可以从web上访问,你应该创建一个从public/storage到storage/app/public的符号链接。

ln -s /path/to/laravel/storage/app/public /path/to/laravel/public/storage

现在你可以在你的视图中使用资产助手创建一个指向文件的URL:

echo asset('storage/file.txt');

对我来说,它与子文件夹路由一起工作

Route::get('/storage/{folder}/{filename}', function ($folder,$filename)
{
    $path = storage_path('app/public/' .$folder.'/'. $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

如果你像我一样,你以某种方式拥有完整的文件路径(我对所需的照片进行了一些glob()模式匹配,所以我几乎最终得到了完整的文件路径),并且你的存储设置链接良好(即,这样你的路径有字符串storage/app/public/),那么你可以使用我下面的小脏hack:p)

 public static function hackoutFileFromStorageFolder($fullfilePath) {
        if (strpos($fullfilePath, 'storage/app/public/')) {
           $fileParts = explode('storage/app/public/', $fullfilePath);
           if( count($fileParts) > 1){
               return $fileParts[1];
           }
        }

        return '';
    }

无站点名称

{{Storage::url($photoLink)}}

如果你想添加网站名称 附加在api JSON felids上的例子

 public function getPhotoFullLinkAttribute()
{
 Storage::url($this->attributes['avatar']) ;
}

如果你是在windows上,你可以在cmd上运行这个命令:

mklink /j /path/to/laravel/public/avatars /path/to/laravel/storage/avatars 

来自: http://www.sevenforums.com/tutorials/278262-mklink-create-use-links-windows.html