download(){
this.$http({
url:"/getImage",
responseType:'blob',
params:{
path:"xxxx.com"
}
}).then(
res => {
let blob = new Blob([res])
let downloadElement = document.createElement('a')
let href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = `x.jpg`; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放blob对象
}
)
}
@RequestMapping("/getImage")
public void getImage(HttpServletResponse response,String path) throws IOException {
QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距
config.setMargin(3);
// 设置前景色,既二维码颜色(青色)
config.setForeColor(Color.CYAN.getRGB());
// 设置背景色(灰色)
config.setBackColor(Color.GRAY.getRGB());
// 生成二维码到文件,也可以到流
File file = QrCodeUtil.generate(path, config, FileUtil.file("d:/img/qrcode.jpg"));
// 下载本地文件
String fileName = "xx.jpg"; // 文件的默认保存名
InputStream inStream = new FileInputStream(file);// 文件的存放路径
// 设置输出的格式
response.setContentType("application/octet-stream");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"utf-8"));
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end");
}