|
@@ -554,7 +554,7 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
|
|
|
}else{
|
|
|
mouldFiles = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", id).eq("state", 3).eq("blong_type",3));
|
|
|
}
|
|
|
- feedBackDirectMultiDownload(request, response, downloadPath, mould, mouldFiles, path);
|
|
|
+ this.download(request, response, downloadPath, mould, mouldFiles, path);
|
|
|
}
|
|
|
}
|
|
|
return msg;
|
|
@@ -703,7 +703,6 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
|
|
|
}
|
|
|
//下载时间
|
|
|
|
|
|
-
|
|
|
rowList.add(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(dynamic.getIndate())
|
|
|
);
|
|
|
list.add(rowList);
|
|
@@ -735,6 +734,69 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
+ public void download(HttpServletRequest request, HttpServletResponse response, String downloadPath, Mould vo, List<MouldFile> mouldFiles, String oldFilePath){
|
|
|
+ //响应头的设置
|
|
|
+ response.reset();
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ response.setContentType("multipart/form-data");
|
|
|
+
|
|
|
+ //设置压缩包的名字
|
|
|
+ //解决不同浏览器压缩包名字含有中文时乱码的问题
|
|
|
+ String downloadName = vo.getModelNo() + vo.getModelName()+".zip";
|
|
|
+ String agent = request.getHeader("USER-AGENT");
|
|
|
+ try {
|
|
|
+ if (agent.contains("MSIE")||agent.contains("Trident")) {
|
|
|
+ downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
|
|
|
+ } else {
|
|
|
+ downloadName = new String(downloadName.getBytes("UTF-8"),"ISO-8859-1");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
|
|
|
+
|
|
|
+ //设置压缩流:直接写入response,实现边压缩边下载
|
|
|
+ ZipOutputStream zipos = null;
|
|
|
+ try {
|
|
|
+ zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
|
|
|
+ zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ //循环将文件写入压缩流
|
|
|
+ DataOutputStream os = null;
|
|
|
+ if(mouldFiles.size()>0){
|
|
|
+ for(int i = 0; i < mouldFiles.size(); i++ ){
|
|
|
+ File file = new File(mouldFiles.get(i).getFileUrl());
|
|
|
+ try {
|
|
|
+ //添加ZipEntry,并ZipEntry中写入文件流
|
|
|
+ //这里,加上i是防止要下载的文件有重名的导致下载失败
|
|
|
+ zipos.putNextEntry(new ZipEntry(mouldFiles.get(i).getFileName()));
|
|
|
+ os = new DataOutputStream(zipos);
|
|
|
+ InputStream is = new FileInputStream(file);
|
|
|
+ byte[] b = new byte[100];
|
|
|
+ int length = 0;
|
|
|
+ while((length = is.read(b))!= -1){
|
|
|
+ os.write(b, 0, length);
|
|
|
+ }
|
|
|
+ is.close();
|
|
|
+ zipos.closeEntry();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //关闭流
|
|
|
+ try {
|
|
|
+ os.flush();
|
|
|
+ os.close();
|
|
|
+ zipos.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
public Map<String, Object> feedBackDirectMultiDownload(HttpServletRequest request, HttpServletResponse response, String downloadPath, Mould vo, List<MouldFile> mouldFiles, String oldFilePath) throws IOException {
|
|
|
//压缩文件初始设置
|