该项目是thinkcmf二开,使用了一个qrcode的类库
/** * 单个商品生成二维码 * 该功能有点类似于电子价签,扫码后能看到商品信息 */ public function qrCode() { //查询要生成二维码的数据 $id = $this->request->param('id'); //接收参数 $res = StockModel::get($id); //查询商品信息 $str = $res['brand']; $brand = iconv('utf-8', 'gbk//TRANSLIT', $str); //生成二维码的时候名字,汉字乱码 $file_name = $brand.'_'.$res['version'].'.png'; $file_path = QRCODE.$brand.'_'.$res['version'].'.png'; //组装数据 $content = "编号:{$res['id']}\n"; $content .= "品牌:{$res['brand']}\n"; $content .= "型号:{$res['version']}\n"; //添加和修改时用-分隔 $content .= "库房名称:{$res['bursary_name']}\n"; $content .= "售价:{$res['sell_price']}\n"; $content .= "剩余数量:{$res['remnant_inventory']}\n"; $content .= "备注:{$res['remarks']}\n"; Loader::import('imooc_QRcode.phpqrcode.qrlib'); /** * 生成二维码 * png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) * @param $text 数据 * @param bool $outfile 保存到本地的文件名(保存到跟目录) * @param int $level 容错等级 * @param int $size 尺寸大小 * @param int $margin 图形离边距的尺寸 * @param bool $saveandprint 保存并打印(必须填第2个参数) */ \QRcode::png($content,$file_path,QR_ECLEVEL_L,8,8,true); //赋给个变量,打印才会显示 download($file_name); //生成的二维码,通过浏览器下载到桌面 }
/* 二维码下载
* @param $provider 要下载的文件名
* @param Request $request
*/
function
download(
$provider)
{
// 下载二维码
$contenttype =
'image/jpeg';
$dir_path = QRCODE;
//图片所在路径
$fileName =
$provider;
//要下载的文件名
$fileurl =
$dir_path.
$fileName;
//从哪个路径下载
header(
"Cache-control: private");
header(
"Content-type:
$contenttype
");
//设置要下载的文件类型
//header("Content-Length:" . filesize($fileurl)); //设置要下载文件的文件大小
header(
"Content-Disposition: attachment; filename=" .
urldecode(
$fileName));
//设置要下载文件的文件名
readfile(
$fileurl);
}