如何从 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">

我需要有关如何在某些路线上显示的帮助

【问题讨论】:

尝试在图片源的开头添加/&lt;img src="/uploads/$stp-&gt;image"&gt; 我在专门的答案中添加了一些精确度,如果您有兴趣了解它是如何工作的 :) 【参考方案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 中的某个路由页面检索图像或文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 4.2 中从数据库中检索图像

如何从 db 中的两个表中路由、获取和显示数据到 laravel 5.2 中的单个网页

使用路由 Laravel 5.2 时访问资源时出错

使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯

如何从 ReactJS 组件调用 Laravel Api 路由?

如何从iphone中的png文件中检索单个图像