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