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

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

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/

你可能感兴趣的文章
poj3307
查看>>
Qt笔记——QMutex&QWaitCondition处理生产者消费者模式
查看>>
Qt笔记——QLable+QPixmap图片缩放踩坑
查看>>
Qt笔记——foreach与forever
查看>>
QT程序怎么挪到Linux下,linux+Qt程序如何打包发布
查看>>
Qt知识:视图框架QGraphicsWidget详解
查看>>
SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
查看>>
Qt知识: 画刷风格
查看>>
QT的OpenGL渲染窗QOpenGLWidget Class
查看>>
QT的C++程序加载动态链接库DLL(Linux下是so)的方式
查看>>
QT界面操作1:如何跟踪鼠标位置?
查看>>
Qt环境搭建(Visual Studio)
查看>>
QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
查看>>
QT样式表——url路径
查看>>
QT数据库(三):QSqlQuery使用
查看>>
QT教程5:消息框
查看>>
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
查看>>
pom.xml中提示web.xml is missing and <failonmissingw>...
查看>>
Pomelo开发中Web客户端开发API简介
查看>>
QT教程2:QT5的体系构架
查看>>