博客
关于我
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/

你可能感兴趣的文章
NT symbols are incorrect, please fix symbols
查看>>
ntelliJ IDEA 报错:找不到包或者找不到符号
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
ntpdate 通过外网同步时间
查看>>
NTPD使用/etc/ntp.conf配置时钟同步详解
查看>>
NTP及Chrony时间同步服务设置
查看>>
NTP配置
查看>>
NUC1077 Humble Numbers【数学计算+打表】
查看>>
NuGet Gallery 开源项目快速入门指南
查看>>
NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
查看>>
nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
查看>>
Nuget~管理自己的包包
查看>>
NuGet学习笔记001---了解使用NuGet给net快速获取引用
查看>>
nullnullHuge Pages
查看>>
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Numix Core 开源项目教程
查看>>
numpy
查看>>
NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
查看>>