我有这条路线的刀片:
/resources/views/cms/public/views/projects/showproject.blade.php
渲染图片的代码是:
@if (Storage::disk('projects')->has($project->slug))
<p class="lead"><img src="{{ asset('/storage/projects/'.$project->slug.'/home.png') }}" width="50%" >Home</p>
@else
<p class="lead"><img src="/assets/img/projects/{{$project->slug}}/home.png" width="50%">Home</p>
@endif
名为projects的存储磁盘如下所示:
'projects' => [
'driver' => 'local',
'root' => storage_path('app/public/projects'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
错误是这样的:
header.png Failed to load resource: the server responded with a status of 500 (Internal Server Error)
我认为问题出在视图上的代码中,我也读过也许我需要使用符号链接,不可能没有它吗?
如果有任何问题,请提供任何帮助。
感谢。 (我之前检查了stackoverflow的其他问题,但找不到错误。)
答案 0 :(得分:2)
来自文档https://laravel.com/docs/5.4/filesystem:
公共磁盘
公用磁盘适用于可公开访问的文件。默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在storage / app / public中。要使它们可以从Web访问,您应该创建一个从公共/存储到存储/ app / public的符号链接。此约定将使您可公开访问的文件保存在一个目录中,当使用零件停机时间部署系统(如Envoyer)时,可以在部署中轻松共享这些文件。
要创建符号链接,您可以使用storage:link Artisan命令:
php artisan storage:link
当然,一旦存储了文件并创建了符号链接,您就可以使用资产助手创建文件的URL:
echo asset('storage/file.txt');