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

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


当前回答

如果你是在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

其他回答

根据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');

一种选择是在存储目录中的子文件夹和公共目录之间创建符号链接。

例如

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

这也是由Laravel的开发人员Taylor Otwell构建的部署管理器Envoyer所使用的方法。

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

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

无站点名称

{{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