如何链接到我的存储目录,或者我应该将它们存储在其他位置。我正在创建一个基本的cms,并希望能够在每个帖子上显示照片。现在我正在尝试
<img src="{{ Storage::get('images/53bb15cceac4f7ecf9fb51cb78296f68.jpeg') }}"
class="img-responsive" alt="Cinque Terre" width="304" height="236">
现在发生的事情是它什么都不返回。
答案 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命令设置符号链路)。