我把用户的头像上传到了Laravel存储器里。我如何访问它们并在视图中呈现它们?
服务器将所有请求指向/public,那么如果它们在/storage文件夹中,我如何显示它们?
我把用户的头像上传到了Laravel存储器里。我如何访问它们并在视图中呈现它们?
服务器将所有请求指向/public,那么如果它们在/storage文件夹中,我如何显示它们?
当前回答
根据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');
其他回答
你可以在控制台中运行这个命令来创建链接:
php artisan storage:link
如果你想要加载少量的私有图像,你可以将图像编码为base64,并直接将它们回显到<img src="{{$image_data}}">:
$path = image.png
$full_path = Storage::path($path);
$base64 = base64_encode(Storage::get($path));
$image_data = 'data:'.mime_content_type($full_path) . ';base64,' . $base64;
我提到private是因为你应该只使用这些方法,如果你不想存储图像通过url公开访问,相反,你必须总是使用标准的方式 (链接存储/公用文件夹,并使用HTTP服务器提供图像)。
注意编码到base64()有两个重要的缺点:
这将增加图像大小约30%。 你在一个请求中组合了所有的图像大小,而不是并行加载它们,这对于一些小的缩略图应该不是问题,但对于许多图像避免使用这种方法。
如果磁盘“本地”不适合你,那么试试这个:
将'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');
如果你是在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
首先,您需要使用artisan命令为存储目录创建一个符号链接
php artisan storage:link
然后在任何视图中,你都可以像这样通过url helper访问你的图像。
url('storage/avatars/image.png');