显示在laravel存储/应用程序/受保护/图像中存储的图像,但返回404
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了显示在laravel存储/应用程序/受保护/图像中存储的图像,但返回404相关的知识,希望对你有一定的参考价值。
该应用程序将图像存储在Laravel 7上的storage / app / protected / images目录中的各个目录中。我可以在本地主机上显示从这些目录中检索到的图像,但是没有问题,但是当我移到暂存台时,我注意到每个即使图像显示在浏览器中,请求也会返回404。
我已经检查了后端,并且后端中的所有图像(管理员)都存在相同的问题。
图像URL结构很简单:example.com/images/slider/image-name.png
这里是我的ImageViewController
:
namespace AppHttpControllersClient;
use AppExceptionsErrorPageException;
use IlluminateHttpRequest;
use AppHttpControllersController;
use IlluminateSupportFacadesStorage;
class ImageViewController extends Controller
{
public function getMainImage($name)
{
if(file_exists(storage_path('app/protected').'/images/'.$name)){
$image = storage_path('app/protected').'/images/'.$name;
}else{
throw new ErrorPageException(404);
}
return response()->file($image);
}
public function getImage($type, $name)
{
if(file_exists(storage_path('app/protected').'/images/'.$type.'/'.$name)){
$image = storage_path('app/protected').'/images/'.$type.'/'.$name;
}else{
throw new ErrorPageException(404);
}
return response()->file($image);
}
}
这里是我的路线:
Route::get('images/{name}', 'ClientImageViewController@getMainImage');
Route::get('images/{type}/{name}', 'ClientImageViewController@getImage');
我似乎无法自行解决问题。
请帮助!
答案
已解决!
该问题在包含nginx静态文件缓存指令之后出现。
我已经改变了方法,现在一切正常!
这里他们适合我的情况下的任何人:
# browser caching of static assets
location ~ /.(jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
# CSS and javascript
location ~* .(?:css|js)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
所有这些代码都在server { ... }
内部
以上是关于显示在laravel存储/应用程序/受保护/图像中存储的图像,但返回404的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Laravel 尝试将其保存到数据库的情况下在 Eloquent 模型中使用受保护的属性