php - Laravel 让浏览器渲染动态图像

标签 php laravel nginx laravel-5 laravel-5.4

我正在使用动态图像生成器 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;
        }


    }

最佳答案

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

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;
     }

关于php - Laravel 让浏览器渲染动态图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43013535/

相关文章:

php - 在 javascript 中公开 MySQL 表名称是否存在安全风险?

php - 我们应该在存储库模式中保存/更新模型吗?

Laravel Blade html 图像

excel - laravel::在一个表中插入数组的某些值,在另一个表中插入其他值

nginx - Ingress-Nginx 的正则表达式路径匹配

nginx - docker nginx 出现 "502".1 上游服务器在连接到上游时暂时禁用

php - 创建并返回另一个类但不包含它的类的 UML 表示是什么?

php - 在 Owncloud 应用程序中回滚 SQL 事务

php - CodeIgniter HMVC 如何定义子模块用户(用户登录)

docker - Nginx:另一个Nginx实例的代理:网关超时