@GetMapping("/generareQrcode")
public void generareQrcode(HttpServletResponse response, String id) throws Exception{
Object obj = xxService.getById(id);
QrcodeUtils.generareQrcode(response,obj.getCode());
}
<!-- 生成类,直接返回流 -->
private static String generareUrl;
public static void generareQrcode(HttpServletResponse response, String code) throws Exception{
// QrConfig qrConfig = QrConfig.create();
// QrCodeUtil.generate(generareUrl+code, qrConfig, new File("d:/qrcode.jpg"));
OutputStream osOut = response.getOutputStream();
QrCodeUtil.generate(generareUrl+"?code="+code,300,300,"jpg",osOut);
osOut.close();
}
<!-- vue行按钮 -->
<template slot-scope="scope" slot="menu">
<el-button type="text"
size="small"
icon="el-icon-download"
plain
class="none-border"
@click="handleGenerareQrcode(scope.row)">生成二维码
</el-button>
</template>
<!-- 调用后台接口,接收流下载文件-->
handleGenerareQrcode(row) {
axios({
url: '.../generareQrcode?id='+row.id,
method: 'get',
responseType: 'blob'
}).then((res) => {
var fileName = row.name+'.jpg';
let blob = new Blob([res.data]); //res为从后台返回的数据
if (!fileName) {
fileName = res.headers['content-disposition'].split('filename=').pop();
}
if ('msSaveOrOpenBlob' in navigator) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
const elink = document.createElement('a');
elink.download = fileName;
elink.style.display = 'none';
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
}
})
}