1、创建二维码public void CreatCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
String content="http://www.baidu.com";//内容
String fileName="filename";//文件名字
String encodeddata=content;
String name=fileName;
String FilePath = "C:\\CODE\\IMAGE\\" + name + ".PNG"; // 生成的图片位置
File f = new File(FilePath);
if(!f.exists()){
File dirname = new File("C:\\CODE\\IMAGE\\");
if (!dirname.isDirectory())
{ //目录不存在
dirname.mkdirs(); //创建目录
}
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');
qrcode.setQrcodeVersion(7);
byte[] d = encodeddata.getBytes("GBK");
BufferedImage bi = new BufferedImage(139, 139,BufferedImage.TYPE_INT_RGB);
// createGraphics
Graphics2D g = bi.createGraphics();
// set background
g.setBackground(Color.WHITE);
g.clearRect(0, 0, 139, 139);
g.setColor(Color.BLACK);
if (d.length > 0 && d.length < 123) {
boolean[][] b = qrcode.calQrcode(d);
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b.length; j++) {
if (b[j][i]) {
g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
}
}
}
}
g.dispose();
bi.flush();
ImageIO.write(bi, "png", f);
System.out.println(encodeddata+"****");
}
Download(request,response,URLEncoder.encode(URLEncoder.encode(fileName+".png","utf-8"),"utf-8"),URLEncoder.encode(URLEncoder.encode(FilePath,"utf-8"),"utf-8"));
}
二、下载二维码
public void Download(HttpServletRequest request, HttpServletResponse response,String fileName,String filePath){ try { fileName=URLDecoder.decode(URLDecoder.decode(fileName, "UTF-8"), "UTF-8"); fileName = new String(fileName.getBytes(), "ISO-8859-1"); //response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(fileName+".png","UTF-8")); response.setHeader("Content-disposition", "attachment;filename="+ fileName); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } response.setContentType("application/vnd.ms-excel;charset=utf-8"); try{ filePath=URLDecoder.decode(URLDecoder.decode(filePath, "UTF-8"), "UTF-8"); FileInputStream fis =new FileInputStream(filePath); OutputStream oa = response.getOutputStream(); byte[] b = new byte[1024]; int i=0; while((i=fis.read(b))>0) { oa.write(b,0,i); } fis.close(); oa.flush(); oa.close(); } catch (IOException e) { e.printStackTrace(); } }