我把用户的头像上传到了Laravel存储器里。我如何访问它们并在视图中呈现它们?
服务器将所有请求指向/public,那么如果它们在/storage文件夹中,我如何显示它们?
我把用户的头像上传到了Laravel存储器里。我如何访问它们并在视图中呈现它们?
服务器将所有请求指向/public,那么如果它们在/storage文件夹中,我如何显示它们?
当前回答
一种选择是在存储目录中的子文件夹和公共目录之间创建符号链接。
例如
ln -s /path/to/laravel/storage/avatars /path/to/laravel/public/avatars
这也是由Laravel的开发人员Taylor Otwell构建的部署管理器Envoyer所使用的方法。
其他回答
你可以在控制台中运行这个命令来创建链接:
php artisan storage:link
无站点名称
{{Storage::url($photoLink)}}
如果你想添加网站名称 附加在api JSON felids上的例子
public function getPhotoFullLinkAttribute()
{
Storage::url($this->attributes['avatar']) ;
}
如果你像我一样,你以某种方式拥有完整的文件路径(我对所需的照片进行了一些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 '';
}
如果磁盘“本地”不适合你,那么试试这个:
将'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');
如果你正在使用php,那么请使用php符号链接函数,如下所示:
symlink (' / home / spedfy projectname / storage / home app,为',/ / spedfy / public_html storage’)
将用户名和项目名更改为正确的名称。