博客
关于我
zip文件上传、解压
阅读量:177 次
发布时间:2019-02-28

本文共 6425 字,大约阅读时间需要 21 分钟。

public synchronized void backUp(HttpServletRequest request, HttpServletResponse response) throws Exception {
String data = "许可无效!";
if (!MapAccessBean.getIsValid()) {
response.setContentType("text/html;charset=UTF-8");
data = "";
System.out.println("key01" + data);
response.getWriter().print(data);
return;
}
if (!("on".equals(request.getParameter("KMLModel")) && "on".equals(request.getParameter("lic")))) {
data = "请勾选需要还原的文件!";
response.setContentType("text/html;charset=UTF-8");
data = "";
response.getWriter().print(data);
return;
}
final String KMLModel = GetRealPath.getRootPath() + File.separator + "KmlModel";
final String images = GetRealPath.getRootPath() + File.separator + "images";
final String layerTree = GetRealPath.getRootPath() + File.separator + "tree.xml";
final String lic = GetRealPath.getRootPath() + File.separator + "sysconfig";
String filePath = tempPath + File.separator + "backUp.zip";
File f = new File(tempPath);
if (!f.exists()) {
f.mkdir();
}
f = new File(filePath);
if (f.exists()) {
f.delete();
}
ZipFile zipFile = new ZipFile(filePath);
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
parameters.setPassword("!@#$%^&*()");
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
if ("on".equals(request.getParameter("KMLModel"))) {
f = new File(KMLModel);
if (!f.exists()) {
f.mkdir();
}
zipFile.addFolder(KMLModel, parameters);
zipFile.addFolder(images, parameters);
zipFile.addFile(new File(layerTree), parameters);
}
if ("on".equals(request.getParameter("lic"))) {
f = new File(lic);
String[] filelist = f.list();
if (filelist != null) {
for (String fileName : filelist) {
if (fileName.lastIndexOf(".lic") != -1) {
zipFile.addFile(new File(lic + fileName), parameters);
}
}
}
}
if (!zipFile.isValidZipFile()) {
throw new ZipException("压缩文件不合法,可能被损坏.");
}
response.reset();
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=backUp.zip");
try {
java.io.FileInputStream in = new java.io.FileInputStream(filePath);
byte[] b = new byte[512];
ServletOutputStream o = response.getOutputStream();
while (-1 != (bytesRead = in.read(b, 0, b.length))) {
o.write(b, 0, bytesRead);
}
in.close();
o.close();
response.flushBuffer();
} catch (IOException e) {
in.close();
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
// o.close();
// if (o != null) {
// o.close();
// }
// if (in != null) {
// in.close();
// }
}
try {
File f2 = new File(filePath);
if (f2.exists()) {
f2.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public ModelAndView restore(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("backUpAndRestore");
File f = new File(tempPath);
System.out.println("tempPath:" + tempPath);
if (!f.exists()) {
f.mkdir();
}
String data = "许可无效!";
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
HashMap params = new HashMap();
try {
List items = upload.parseRequest(request);
for (Iterator it = items.iterator(); it.hasNext();) {
FileItem fileItem = (FileItem) it.next();
if (fileItem.isFormField()) {
try {
params.put(fileItem.getFieldName(), fileItem.getString("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
String fileName = fileItem.getName();
if (!fileName.endsWith(".zip")) {
try {
throw new Exception(Catalog.getLocalizationForKey("KmlController.ZIPAllowed"));
} catch (Exception e) {
e.printStackTrace();
}
}
File file = new File(tempPath, "restore.zip");
try {
fileItem.write(file);
} catch (Exception e1) {
e1.printStackTrace();
}
ZipFile zipFile = new ZipFile(file);
if (!zipFile.isValidZipFile()) {
try {
throw new ZipException("压缩文件不合法,可能被损坏.");
} catch (ZipException e) {
data = "1";
modelAndView.addObject("message", data);
return modelAndView;
}
}
if (zipFile.isEncrypted()) {
zipFile.setPassword("!@#$%^&*()");
zipFile.extractAll(GetRealPath.getRootPath());
} else {
data = "2";
modelAndView.addObject("message", data);
return modelAndView;
}
}
}
} catch (FileUploadException e1) {
e1.printStackTrace();
}
if (!MapAccessBean.getIsValid()) {
data = "4";
modelAndView.addObject("message", data);
return modelAndView;
} else {
modelAndView.addObject("message", Catalog.getLocalizationForKey("KmlController.restorSuccess"));
if ("on".equals(params.get("checkURL"))) {
try {
kmlService.checkIconUrl(request.getServerName() + ":" + request.getServerPort());
} catch (Exception e) {
e.printStackTrace();
}
}
SysConfig.getInstance().init();
}
return modelAndView;
}

转载地址:http://dwvj.baihongyu.com/

你可能感兴趣的文章
NOIP2014 提高组 Day2——寻找道路
查看>>
noip借教室 题解
查看>>
NOIP模拟测试19
查看>>
NOIp模拟赛二十九
查看>>
Vue3+element plus+sortablejs实现table列表拖拽
查看>>
Nokia5233手机和我装的几个symbian V5手机软件
查看>>
non linear processor
查看>>
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>
None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
查看>>
NoNodeAvailableException None of the configured nodes are available异常
查看>>
Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
查看>>
nopcommerce商城系统--文档整理
查看>>
NOPI读取Excel
查看>>
NoSQL&MongoDB
查看>>
NoSQL介绍
查看>>
NoSQL数据库概述
查看>>
Notadd —— 基于 nest.js 的微服务开发框架
查看>>
NOTE:rfc5766-turn-server
查看>>
Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>