php - 在 Laravel 7 中返回响应图像
问题描述
我正在尝试创建一个迷你random
图像生成器,作为我尝试过的开始:
Route::get('/img/UoJb9wl.png','Image@random');
我所做的就是退回这个
return '<img src="/assets/fe/img/welcome.jpeg" alt="Smiley face" width="200">';
然后,我在现场进行了测试:
如果我转到 URL,我会看到加载的图像
https://www.bunlongheng.com/img/UoJb9wl.png
如果我像这样在JSFiddle这样的网站上导入
<img src="https://www.bunlongheng.com/img/UoJb9wl.png">
我看不到它。
为什么 ?
编辑
尝试#2
return env('APP_URL').'/assets/fe/img/welcome.jpeg';
我现在返回图像路径
但我仍然没有在我的JSFiddle中渲染
<img src="https://www.bunlongheng.com/img/UoJb9wl.png">
解决方案
这不起作用,因为您的控制器返回的不是图像,而是 HTML 代码。
当您在浏览器中使用此地址时,它会向您的服务器发送请求,服务器以 HTML 响应,其中包含<img src="..."/>
指向实际图像的链接,因此浏览器会显示它。
当您尝试在 中使用相同的地址时<img src="..."/>
,您的服务器仍然返回不是图像的 HTML 代码,因此显然不会显示它。
- 您始终可以提供图像本身:
function random()
{
return response()->file(/* path to image file */);
}
- 您可以检查
Accept
标题以确定要响应的内容:
function random(Request $request)
{
$accept = $request->header('Accept');
if (strpos($accept, 'text/html') !== false) {
return response()->html('<img ...');
} elseif (strpos($accept, 'image/') !== false) {
return response()->file(...);
}
abort(403, 'No content for requested type');
}
推荐阅读
- c++ - 无法使用 MSVC/Clang 在 Windows 上将 SDL2 与 CMake 链接
- arrays - C - 写入和读取动态数组
- node.js - 如何将 puppeteer 与无浏览器和代理一起使用
- anylogic - AnyLogic中“代理”类型参数的访问值
- git - 有没有办法使用逻辑 AND 在 GitHub 操作中组合推送标准?
- r - R - 根据条件启动和重置 R 中的计数列
- python - Jupyter 不会从 Windows10 上的 Anaconda3 启动
- python - Anaconda 应用程序未在我的 PC 中打开
- c - 如何用 C 制作交互式菜单?
- javascript - 来自 momentjs 的函数 fromNow() 和 toNow() 无法按预期工作