如何从 laravel 中的某个路由页面检索图像或文件?
Posted
技术标签:
【中文标题】如何从 laravel 中的某个路由页面检索图像或文件?【英文标题】:how to retrieve images or files from a certain route page in laravel? 【发布时间】:2020-05-01 13:56:13 【问题描述】:我在某些路线上显示或检索用户个人资料照片时遇到问题。它适用于其他视图,尤其是主要视图。当我尝试在某个视图上显示但更改路线时,照片无法显示。
示例:1如果我尝试使用此视图和路由从我的数据库中显示或检索图像,它将失败
Route::get('staff/staffprofile/payslip', function ()
return view('payslip');
);
示例 2: 使用以下代码:
Route::get('/payslip', function ()
return view('payslip');
);
这就是我显示照片的方式,它适用于示例 2
<img src="uploads/$stp->image">
我需要有关如何在某些路线上显示的帮助
【问题讨论】:
尝试在图片源的开头添加/
:<img src="/uploads/$stp->image">
我在专门的答案中添加了一些精确度,如果您有兴趣了解它是如何工作的 :)
【参考方案1】:
它不起作用的原因是“漂亮的 URL”和路径的工作方式(相对/绝对)。
尝试查看具有不同深度“级别”的 URL:
/staff/staffprofile/payslip
将是 2 级
/payslip
将是 0 级
鉴于您可能使用“公共”文件夹来存储所有资产和 index.php 文件,因此您需要确保网络服务器实际使用相对于您的“根”文件夹的路径,在此公用文件夹的情况。
假设您的图像存储在.../public/uploads/
。 (...
是路径中之前的文件夹)
根据您链接图片的方式,网络服务器将在不同的位置搜索图片:
没有第一个正斜杠 (uploads/image.png
)
/staff/staffprofile/payslip
: .../public/staffprofile/payslip/uploads/image.png
开启/payslip
:.../public/uploads/image.png
没有正斜杠,它只适用于“0级”网址。
然而,使用正斜杠 (/uploads/image.png
)
/staff/staffprofile/payslip
: .../public/uploads/image.png
开启/payslip
: .../public/uploads/image.png
我也是通过艰难的方式学习并随机得出的,所以我很高兴它对某人有所帮助。
【讨论】:
【参考方案2】:如果图片是使用 Laravel 的 Storage Facade 上传的,你可以使用 Storage::url()
来获取图片的绝对 url。
如果您想使用相对路径,您可以使用/uploads/...
或使用 html 标记设置基本 url。
【讨论】:
以上是关于如何从 laravel 中的某个路由页面检索图像或文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 db 中的两个表中路由、获取和显示数据到 laravel 5.2 中的单个网页
使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯