显示在laravel存储/应用程序/受保护/图像中存储的图像,但返回404

问题描述 投票:0回答:1

该应用程序将图像存储在Laravel 7上的storage / app / protected / images目录中的各个目录中。我可以在本地主机上显示从这些目录中检索到的图像,但是没有问题,但是当我移到暂存台时,我注意到每个即使图像显示在浏览器中,请求也会返回404。

我已经检查了后端,并且后端中的所有图像(管理员)都存在相同的问题。

图像URL结构很简单:example.com/images/slider/image-name.png

这里是我的ImageViewController

namespace App\Http\Controllers\Client;

    use App\Exceptions\ErrorPageException;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Storage;

    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}', 'Client\ImageViewController@getMainImage');

Route::get('images/{type}/{name}', 'Client\ImageViewController@getImage');

我似乎无法自行解决问题。

请帮助!

image http-status-code-404 laravel-7 forge
1个回答
0
投票

已解决!

该问题在包含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 { ... }内部

© www.soinside.com 2019 - 2024. All rights reserved.