2017-08-07 253 views
1

我在这条路的刀片:Laravel“无法加载资源”

/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' => [ 
     '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

尽量使符号链接,也就是在'storage'文件夹,并从你的'public'文件加载需要被符号链接的一切。 – Jorn

回答

2

从文档https://laravel.com/docs/5.4/filesystem

公共磁盘

公共磁盘旨在为将要公开访问的文件。默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在storage/app/public中。为了让他们可以通过网络访问,您应该创建一个从公共/存储到存储/应用/公共的符号链接。这种约定将您的可公开访问的文件保存在一个目录中,在使用零时间部署系统(如Envoyer)时,可以轻松地在部署中共享这些文件。

要创建符号链接,您可以使用存储:链接工匠命令:

php artisan storage:link 

当然,一旦文件被存储和符号链接已经建立,您可以创建一个网址使用资产帮助文件:

echo asset('storage/file.txt'); 
+1

嗨Jorn,首先感谢您的快速回答。当我发布我也在阅读文档的问题时。这是成功的,只是让'php artisan存储:链接',然后'slu。'/ home.png')}}“width =”50%“>家'感谢很多!不知道哪个扩展名,我应该怎么做?谢谢不管怎么说;) –

+0

我会将你的图像名称,类型,路径存储在你的数据库中如果你的图像是你的设计的一部分,并会留在那里很长一段时间,只是硬编码它们,如果你有页面上传图像或频繁更改图像,存储它们,这样你可以检索位置,并从数据库中输入 – Jorn