提示:图片压缩下载
SpringBoot+Vue批量下载图片压缩包
前言
项目中遇到上传的图片需要下载下来,并且是以压缩包的格式。因此记录下来,给自己以及小伙伴们。
提示:以下是本篇文章正文内容,下面案例可供参考
后台正文
controller
/**
* 教师信息Controller
*
* @author milletsoft
* @date 2022-08-30
*/
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@RestController
@RequestMapping("/jsgl/jsxxb")
public class JsJsxxbController extends BaseController {
/**
* 导出照片
*/
@PostMapping("/downloadJSImg")
public void downJSImg(@RequestBody JsJsxxb jsJsxxb){
jsJsxxbService.downloadJSImg(jsJsxxb);
}
}
impl
/**
* 教师照片导出
*
* @param jsJsxxb 导出教师照片
*/
@Override
public void downloadJSImg(JsJsxxb jsJsxxb) {
String namingFormat = jsJsxxb.getDcmmgs();
//根据条件先查询符合条件的数据
List<JsJsxxb> list = jsJsxxbMapper.selectDownLoadImg(jsJsxxb);
//声明一个存储路径的List
List<Map<String, String>> paths = new ArrayList<Map<String, String>>();
list.forEach(JsJsxxb -> {
String imagePrefix = getImagePrefix(JsJsxxb,namingFormat);
paths.add(GenerateImageUtil.GenerateImage(GenerateImageUtil.ByteStreamToBase64(JsJsxxb.getTxs()),imagePrefix));
});
try {
DownloadZipUtil.download(paths,"教师照片_"+System.currentTimeMillis(),response);
} catch (Exception e) {
e.printStackTrace();
}
}
提示:生成图片的格式也可以控制 png jpg
1.我的代码中 namingFormat 是导出的命名格式,前端选择是身份证那就获取用户身份证号作为生成的图片的名称。例如: 12345678901234567.png
2.list.forEach 去遍历查询回来的数据 。getImagePrefix方法中会判断namingFormat ,为空就获取当前时间戳作为生成图片的名称。例如: 1294890876859.png 代码如下:
/**
* 得到图像前缀
*
* JsJsxxb jsJsxxb
*/
public String getImagePrefix(JsJsxxb jsJsxxb, String namingFormat) {
String prefix = new String();
if (StringUtils.isNotBlank(namingFormat)){
switch (namingFormat) {
case "zgh": {
prefix = jsJsxxb.getZgh();
break;
}
case "sfzh": {
prefix = jsJsxxb.getSfzh();
break;
}
default: {
prefix = String.valueOf(System.currentTimeMillis());
}
}
}else{
prefix = String.valueOf(System.