@RequestMapping("/getQRCode")
@ResponseBody
public HashMap<String, Object> getQRCode(HttpServletRequest request, HttpServletResponse response,String id) throws Exception{
int serverPort = request.getServerPort();
String serverName = "http://"+ myHost + ":" + serverPort + contextPath;
if(StringUtils.isBlank(id)) {
return R.error("主键值不能为空,请修改。");
}
String tablename = "AM_Signin";
HashMap<String, Object> obj = service.getMapByKey(tablename, id);
String name = (String)obj.get("name");
MySqlData mySqlData = new MySqlData();
mySqlData.setTableName("AM_Signin");
mySqlData.setFieldWhere("id", id, "=");
QRCodeWriter qrCodeWriter = new QRCodeWriter();
String url = serverName + "/Achievements/AM_Signinuser/Add?activityid="+id;
int widthHeight = 500;
BitMatrix bitMatrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE,widthHeight,widthHeight);
String realPath = request.getSession().getServletContext().getRealPath("/QRCode/");
File file = new File(realPath);
if (!file.exists()) {
file.mkdirs();
}
String fileName = newDate.getDate("yyyyMMdd")+(new Random().nextInt(900000)+100000)+name+".png";
mySqlData.setFieldValue("qrname", fileName);
service.update(request, mySqlData);
String filePath = realPath + fileName;
Path path = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bitMatrix,"PNG",path);
File readFile = new File(filePath);
FileInputStream is = new FileInputStream(readFile);
response.setContentType("text/plain;charset=UTF-8");
String filename = new String(fileName.getBytes(), "ISO-8859-1");
response.setHeader("content-disposition", "attachment;fileName=" + filename);
ServletOutputStream os = response.getOutputStream();
int len;
byte[] b = new byte[1024];
while(true){
len = is.read(b);
if(len == -1) break;
os.write(b, 0, len);
}
os.close();
is.close();
return R.ok();
}
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>