2017-07-22 72 views
1

我有一个脚本,用户可以在其中上传带有客户端ID的照片。照片位于storage/app/public,文件名称以db为单位。然后我得到名字,并尝试显示照片或文件,但我不能。 这里是我的代码:Laravel无法显示图像

'disks' => [ 

     'local' => [ 
      'driver' => 'local', 
      'root' => storage_path('app'), 
     ], 

     'public' => [ 
      'driver' => 'local', 
      'root' => storage_path('storage/app/public'), 
      'url' => env('APP_URL').'/storage', 
      'visibility' => 'public', 
     ], 

这里是控制器:

public function file($id) 
{ 
    $client = Client::findOrFail($id); 
    return View::make('file', compact('client')); 
} 

file.blade.php

<img src="{{ public_path($file_name) }}" /> 

和控制台日志:

enter image description here

如何显示文件?

+0

你如何确定'$ file_name'的值? –

回答

0

确保您已创建从存储符号链接公众。

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

php artisan storage:link 

您可以访问存储网址,这样显示图像:

<img src="{{ url('/') . Storage::url($file_name) }}"> 

了解更多:https://laravel.com/docs/5.4/filesystem#the-public-disk

+0

什么应该在这里? FULLY_QUALIFIED_PATH @Waleed –

+0

更新了我的答案 – Waleed

+0

哦,这工作我爱你。谢谢 –

0

公用磁盘用于将要公开访问的文件。默认情况下,public磁盘使用本地驱动程序并将这些文件存储在storage/app/public中。为了让他们可以通过网络访问,您应该创建一个从public/storagestorage/app/public的符号链接。

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

php artisan storage:link 

https://laravel.com/docs/5.4/filesystem#the-public-disk

+0

还需要'Storage :: disk(“public”) - > url($ file_name)'获取文件的URL – apokryfos

+0

@apokryfos该命令添加到刀片上? –

+0

我得到了“公共/存储已经存在”。再次不知道该怎么办 –