(LARAVEL)我只是想链接到我的storage / app / images目录中的照片

时间:2016-09-09 14:36:22

标签: laravel laravel-5

如何链接到我的存储目录,或者我应该将它们存储在其他位置。我正在创建一个基本的cms,并希望能够在每个帖子上显示照片。现在我正在尝试

<img src="{{ Storage::get('images/53bb15cceac4f7ecf9fb51cb78296f68.jpeg') }}" 
        class="img-responsive" alt="Cinque Terre" width="304" height="236">

现在发生的事情是它什么都不返回。

1 个答案:

答案 0 :(得分:1)

图片必须存储在全球公开的目录中。存储目录不应公开。

您应该在/public目录下的某个位置创建一个文件夹并将图像放在那里(例如/public/images)。然后你可以链接到它们:

<img src="{{ asset('images/53bb15cceac4f7ecf9fb51cb78296f68.jpeg') }}" class="img-responsive" alt="Cinque Terre" width="304" height="236">

现在,您可以将图像存储在存储目录中,但是您必须创建一个Laravel路径,该路径具有检索图像数据并将其作为图像数据流回的逻辑,但这会增加很多复杂性查看图像,并且意味着必须为每个图像加载整个Laravel框架,这不是非常有效。

修改

由于您正在处理用户上传的图像,因此您可能需要遵循Laravel文档提供的一些建议。默认情况下,store($location)方法会将文件放在storage/app/{$location}目录中。

但是,Laravel附带了一个预先配置的public存储文件系统。如果您将此文件系统作为第二个参数(store($location, 'public'))传入,则会将该文件存储在storage/app/public/{$location}目录中。要使此目录公开,您可以运行storage:link artisan命令,该命令将创建指向/public/storage目录的/storage/app/public符号链接。

php artisan storage:link

因此,如果您的代码为$request()->file('photo')->store('images', 'public'),则会将照片存储为/storage/app/public/images/53bb15cceac4f7ecf9fb51cb78296f68.jpeg,并通过{{ asset('storage/images/53bb15cceac4f7ecf9fb51cb78296f68.jpeg') }}进行访问(假设您已运行artisan命令设置符号链路)。

关于storing uploaded files的文件 有关public filesystem disk

的文档