kyo*_*kyo 2 php image laravel laravel-5 laravel-7
我正在尝试创建一个迷你random图像生成器,作为我尝试过的开始:
Route::get('/img/UoJb9wl.png','Image@random');
Run Code Online (Sandbox Code Playgroud)
我所做的就是返回这个
return '<img src="/assets/fe/img/welcome.jpeg" alt="Smiley face" width="200">';
Run Code Online (Sandbox Code Playgroud)
然后,我在实时站点上进行了测试:
如果我转到 URL,我会看到图像已加载
https://www.bunlongheng.com/img/UoJb9wl.png
Run Code Online (Sandbox Code Playgroud)
如果我像这样在像JSFiddle这样的网站上导入
<img src="https://www.bunlongheng.com/img/UoJb9wl.png">
Run Code Online (Sandbox Code Playgroud)
我看不到。

为什么 ?
尝试 #2
return env('APP_URL').'/assets/fe/img/welcome.jpeg';
Run Code Online (Sandbox Code Playgroud)
我现在返回图像路径

但在我我仍然没有渲染的jsfiddle仍
<img src="https://www.bunlongheng.com/img/UoJb9wl.png">
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为您的控制器返回的不是图像,而是 HTML 代码。
当您在浏览器中使用此地址时,它会向您的服务器发送请求,服务器以 HTML 响应,其中包含<img src="..."/>指向实际图像的链接,因此浏览器会显示它。
当您尝试在 中使用相同的地址时<img src="..."/>,您的服务器仍然返回不是图像的 HTML 代码,因此显然它不会显示。
function random()
{
return response()->file(/* path to image file */);
}
Run Code Online (Sandbox Code Playgroud)
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');
}
Run Code Online (Sandbox Code Playgroud)