我已经使用以下几行代码上传了laravel格式的图像:
if($request->hasFile('filea'))
{
$filepath = $request->filea->getClientOriginalName();
$request->filea->storeAs('public/upload',$filepath);
}
和存储在database.Images中的文件名都成功地存储在我的硬盘中。当我尝试在模板中渲染图像时,我使用了以下内容:
<img src="{{ asset('public/upload/'.$user->imagepath) }}/>"
这将创建以下链接:
<img src="http://localhost:28965/public/upload/IMG_20170906_105035.jpg"/>
我也试过了:
<img src="{{ asset('upload/'.$user->imagepath) }}/>"
但不会渲染任何图像。这里的语法错误是什么?
发布于 2018-06-19 18:44:02
我已经找到了解决方案。事情是这样的:我已经上传了laravel中的图片,所以它将被存储在storage/app/public中。但是如果我尝试通过asset访问,它将不起作用,因为asset引用公共文件夹。所以我读取了config/filesystems.php,它有以下几行:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
所以这意味着访问localhost:port/storage将链接到storage/app/public文件夹。所以我运行了这个命令
php artisan storage:link
在渲染的图像源中,我写道:
<img src="{{ url('storage/upload/'.$user->imagepath) }}" />
而且它起作用了。
发布于 2018-06-19 00:49:41
<img src="{{ asset('upload/'.$user->imagepath) }}">
如果文件存在于公共/上传中,并在.env文件中检查您的APP_URL,则此方法应该有效。
如果您的文件在您的存储中,请尝试:
storage_path('app/public/upload'.$user->imagepath)
像这样:
<img src="{{ storage_path('app/public/upload'.$user->imagepath) }}">
发布于 2018-06-19 01:01:58
您是否创建了符号链接?,您可以使用storage:link Artisan命令:
php artisan storage:link
https://stackoverflow.com/questions/50913907
复制相似问题