如何显示存储在数据库 PHP 中的图像路径? (Laravel 兰花)
Posted
技术标签:
【中文标题】如何显示存储在数据库 PHP 中的图像路径? (Laravel 兰花)【英文标题】:How do I display image path stored in database PHP? (Laravel Orchid) 【发布时间】:2021-04-21 02:30:09 【问题描述】:我想在我的 Laravel Orchid 管理面板中显示图像。 Orchid 将上传的图片存储在此文件夹中,文件夹名称为上传日期:
storage\app\public\2021\04\21\<name>
Laravel 将图像原始名称、路径、扩展名等存储在一个名为“附件”的特殊表中。它通过 id、“users”中的 image_id 和“attachments”中的 id 链接到我的名为“users”的主表。在我的数据库中,路径存储为日期,例如:
2021/04/21/
我执行了这个 SQL 连接查询来检索图像:
$image = $user->image_id;
$images = DB::table('users')
->leftJoin('attachments', 'users.image_id', '=', 'attachments.id')
->where('users.image_id', '=', $image)
->get(['name', 'original_name', 'path', 'extension']);
foreach($images as $image)
$image_url = $image->path.$image->name.'.'.$image->extension;
return "<img src='$image_url'
<span class='small text-muted mt-1 mb-0'>$image->original_name</span>";
我可以显示原始名称,但图像不显示。我想知道我检索图像的方式是否有问题。谢谢。
【问题讨论】:
看起来<img
标记缺少结束>
,它可能需要一个大小(宽度和高度)?
您的图片标签缺少>
,我认为您的网址中缺少项目根目录。它应该是这样的:127.0.0.1:8000/publc/path/to/folder
当您在浏览器中检查损坏的链接/丢失的图像时,您会看到什么?路径不正确还是空路径?
@Andrew 输出的路径是正确的,但是当我在新选项卡中打开它时,它说该页面不存在。
@BillJustin 好的,当我从浏览器中尝试时,发现图片的链接不包括/admin
部分,它是http://127.0.0.1:8000/storage/2021/04/12/12876b4a034032120b0a3cc3972f19cf2411aaaf.png
。我在这里需要一些指导。需要在/admin
下注册图片路由吗?
【参考方案1】:
图片的公共路径在config\filesystems.php
文件中配置。
会有一个部分看起来像这样:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
您可能需要更正保存到数据库中的图像路径,以匹配此处配置的内容,注意“url”值与您提到的照片工作位置相匹配。
【讨论】:
【参考方案2】:假设$image_url="2021/04/21/12876b4a034032120b0a3cc3972f19cf2411aaaf.png"
并且您的文件在/storage/public/2021/04/21/12876b4a034032120b0a3cc3972f19cf2411aaaf.png
中
由于图像在存储路径中,您可以创建响应图像的路由。
Route::get('/image/path', function ($path)
return \Illuminate\Support\Facades\Storage::disk('public')->response($path);
)->where('path', '.*')->name('show.image');
并将您的 return "<img src='$image_url'
替换为 return "<img src='route('show.image',['path'=>$image_url])'
【讨论】:
图像仍然不显示,并且由于某种原因,当我检查代码时,图像源还包括route....
以上是关于如何显示存储在数据库 PHP 中的图像路径? (Laravel 兰花)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用存储在数据库字段中的相对路径在 ms access 2013 报告中显示图像
考虑到我的图像的链接存储在 MySQL 数据库中,如何通过 php 显示存储在文件夹中的图像
如何在 Laravel 7 中使用 Livewire 显示存储路径中的图像