【问题标题】:Laravel make the browser renders a dynamic imageLaravel 使浏览器呈现动态图像
【发布时间】:2017-03-25 15:47:28
【问题描述】:

我正在使用动态图像生成器simple-qrcode。它可以作为img src 正常工作。但是,当我尝试直接访问时,例如site.dev/qr/some-text/60,客户端地址栏中的图像返回编码文本而不是图像。

以下是动作方法:

public function qr($txt='None',$size=32)
    {
        return QrCode::format('png')->size($size)->generate(urldecode($txt));
    }

以下是web.php中的路线:

Route::get('/generator/qr/{txt?}/{size?}', 'GeneratorController@qr')->where(['txt', '(.*)/']);

我尝试将.png 添加到路由中,希望浏览器将其视为图像,即site.dev/qr/some-text/60/qr.png,但它也不起作用,如下所示:

Route::get('/generator/qr/{txt?}/{size?}/qr.png', 'GeneratorController@qr')->where(['txt', '(.*)/']);

应用程序在 Nginx 1.10.3 / Windows10 64 位上使用 PHP7.1.3 作为 fastcgi 运行。以下是Nginx的虚拟主机设置:

server {
        listen       80;
        server_name  site.dev;
        location /{
            root   C:/Users/Said/Desktop/Project/laravel/site/public;
            index  index.php index.html index.htm;
            try_files $uri $uri/ /index.php?$query_string;
        }
        error_page  404              /404.html;        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }        
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  C:/Users/Said/Desktop/Project/laravel/site/public/$fastcgi_script_name;

            fastcgi_buffer_size 128k;
            fastcgi_buffers 256 16k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;

            include        fastcgi_params;
        }        
        location ~ /\.ht {
            deny  all;
        }


    }

【问题讨论】:

    标签: php laravel nginx laravel-5 laravel-5.4


    【解决方案1】:

    这应该通过创建具有正确标题的自定义响应来解决:

    use Response;
    //....
    public function qr($txt='None',$size=32)
        {
            $qr = QrCode::format('png')->size($size)->generate(urldecode($txt));    
            $response = Response::make($qr, 200);
            $response->header("Content-Type", "image/png");
            return $response;
         }
    

    【讨论】:

    • 很好,但不得不提的是在控制器的类中添加use Response
    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2012-10-18
    相关资源
    最近更新 更多