我想在 html 文件中显示图片,我转到链接文件夹 公共/存储/图像是空的,但在存储/图像中我找到了该文件并且 它也保存在数据库中。*
@foreach($cvs as $cv)
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="{{ asset('storage/'.$cv->photo) }}" alt="...">
<div class="caption">
<h3>{{ $cv->titre }}</h3>
<p>{{$cv->presentation}}</p>
<p>
<a href="#" class="btn btn-primary" role="button">Afficher</a>
<a href="#" class="btn btn-success" role="button">Modifier</a>
<a href="#" class="btn btn-danger" role="button">Supprimer</a>
</p>
</div>
</div>
</div>
@endforeach
</div>
</div>
首先在 .env 文件中创建一个名为 FILESYSTEM_DRIVER 的变量并将其设置为
public
,如下所示
FILESYSTEM_DRIVER=public
然后通过运行创建符号链接
php artisan storage:link
之后只需使用 asset()
<img src="{{ asset('storage/'.$cv->photo) }}" alt="...">
效果会很好😊
进入公共目录:
cd public
运行此命令以删除存储文件夹:
rm -r storage
返回项目根目录:
cd ..
然后运行:
php artisan storage:link
public
磁盘适用于可公开访问的文件。默认情况下,public
磁盘使用本地驱动程序并将这些文件存储在storage/app/public
中。为了使它们可以从网络上访问,您应该创建一个从 public/storage
到 storage/app/public
的符号链接。 Laravel 文档
在 Linux
中创建符号链接ln -s source_file myfile
只需对文件系统配置/文件系统进行简单修改即可解决此问题 来自:
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
]
至:
'local' => [
'driver' => 'local',
'root' => storage_path('app/public'),
]
如果您无法通过运行在 LAMP 上创建符号链接
php artisan storage:link
然后运行
ln -s public_html/storage/app/public public_html/public/storage
如果您不在 public_html 或根文件夹中,则运行
ln -s /application/xyhpnqyw/public_html/storage/app/public /application/xyhpnqyw/public_html/public/storage
target='/application/xyhpnqyw/public_html/storage/app/public'
shortcut='/application/xyhpnqyw/public_html/public/storage'
然后运行这些命令
正如 Mayank Majithya 所指出的,符号链接是从
storage/app/public/
目录访问 public/
文件的一种常见方法,事实上,Laravel 文档 说你应该使用该方法。
如果您使用的共享主机不允许这样做,您也可以尝试使用 Laravel 的
storage_path()
辅助函数,如下所示:<img src="{{ storage_path('subpaths/under/storage/filename.jpg') }}">
(reference)。
我还注意到您提到图像存储在数据库中。如果您的意思是存储整个文件,那么仅将文件路径存储在数据库中可能会更有效(一旦确定了文件路径),而不是整个文件(因为它已经存储在磁盘上)。然后,您可以使用模型来获取路径(假设您的表具有“src”和“alt”列):
<img src="{{ $mymodel->src }}" alt="{{ $mymodel->alt }}">
这对我有用。我添加了命令“Artisan::call('storage:link', [] );”到路由文件的开头并从 public 中删除存储文件夹。
一定要先删除该文件夹,否则无法使用。
从路由中删除代码(如果它有效),因为它应该只在服务器上运行一次。