文件在线压缩与解压

您所在的位置:网站首页 bind压缩 文件在线压缩与解压

文件在线压缩与解压

#文件在线压缩与解压| 来源: 网络整理| 查看: 265

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-XX-178 一,项目简介

   主要使用 gzip协议对上传到服务器的文件进行在线压缩和解压操作。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

三,系统展示

用户登陆

 进入指定文件的目录:展示目 录下文件和文件夹列表

 在线对文件进行压缩或解压,也可以进行删除操作

 

四,核心代码展示 package com.sdy.unzipSystem.controllers; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import com.sdy.unzipSystem.dto.DirDTO; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.swing.filechooser.FileSystemView; import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @Controller @RequestMapping("file") public class FileController { @Value("${root.path}") private String rootPath; /** * 上传文件 * * @param file * @param path * @return */ @RequestMapping("upload") @ResponseBody public Map upload(@RequestParam("file") MultipartFile file, @RequestParam("path") String path) { // 判断文件是否为空 HashMap message = new HashMap(); if (!file.isEmpty()) { try { // 文件保存路径 String filePath = path + "/" + file.getOriginalFilename(); // 转存文件 file.transferTo(new File(filePath)); message.put("status", "ok"); } catch (Exception e) { // e.printStackTrace(); message.put("status", "error"); } } return message; } /** * 下载 * * @param response * @param path * @return * @throws Exception */ @RequestMapping(value = "/download") public String downloads(HttpServletResponse response, @RequestParam("path") String path) throws Exception { String fileName = path.split("\\\\")[path.split("\\\\").length - 1]; File file = new File(path); response.reset(); response.setCharacterEncoding("UTF-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); FileInputStream input = new FileInputStream(file); OutputStream out = response.getOutputStream(); byte[] buff = null; buff = new byte[1024]; Long size = FileUtil.size(file); if (size >= 1024 * 20) { buff = new byte[1024 * 10]; } if (size < 1024 * 20) { buff = new byte[size.intValue()]; } if (size == 0) { buff = new byte[50]; } int index = 0; while ((index = input.read(buff)) != -1) { out.write(buff, 0, index); out.flush(); } out.close(); input.close(); return null; } /** * 得到系统根路径磁盘列表 * * @return */ @RequestMapping("getRootFileList") @ResponseBody public HashMap getRootFileList() { HashMap rs = new HashMap(); FileSystemView sys = FileSystemView.getFileSystemView(); File[] files = null; if (StrUtil.isNotBlank(rootPath)) { return getFileList(rootPath); } files = File.listRoots(); ArrayList list = new ArrayList(); for (int i = 0; i < files.length; i++) { System.out.println(files[i] + " -- " + sys.getSystemTypeDescription(files[i])); DirDTO d = new DirDTO(); d.setPath(files[i].toString()); d.setSimpleName(files[i].toString()); d.setType(files[i].isDirectory() ? "dir" : "file"); d.setInfo(sys.getSystemTypeDescription(files[i])); if (!FileUtil.isDirectory(files[i])) { String readableSize = FileUtil.readableFileSize(files[i]); if ("0".equals(readableSize) || "".equals(readableSize)) { d.setReadableSize("-"); } else { d.setReadableSize(readableSize); } } else { d.setReadableSize("-"); } list.add(d); } rs.put("status", "ok"); rs.put("rs", list); return rs; } /** * 得到一个目录下的文件列表 * * @param path * @return */ @RequestMapping("getFileList") @ResponseBody public HashMap getFileList(@RequestParam("path") String path) { HashMap rs = new HashMap(); FileSystemView sys = FileSystemView.getFileSystemView(); File root = FileUtil.file(path); root.listFiles(); File[] files = root.listFiles(); ArrayList list = new ArrayList(); for (int i = 0; i < files.length; i++) { System.out.println(files[i] + " -- " + sys.getSystemTypeDescription(files[i])); DirDTO d = new DirDTO(); d.setPath(files[i].toString()); d.setSimpleName(files[i].getName()); d.setType(files[i].isDirectory() ? "dir" : "file"); d.setInfo(sys.getSystemTypeDescription(files[i])); if (!FileUtil.isDirectory(files[i])) { String readableSize = FileUtil.readableFileSize(files[i]); if ("0".equals(readableSize) || "".equals(readableSize)) { d.setReadableSize("-"); } else { d.setReadableSize(readableSize); } } else { d.setReadableSize("-"); } list.add(d); } rs.put("status", "ok"); rs.put("rs", list); return rs; } /** * 删除文件 * * @param path * @return */ @RequestMapping("delFile") @ResponseBody public HashMap delFile(@RequestParam("path") String path) { HashMap rs = new HashMap(); Console.log("删除文件:" + path); FileUtil.del(path); return rs; } /** * 压缩文件或文件夹 * * @param path * @return */ @RequestMapping("package") @ResponseBody public HashMap packagePath(@RequestParam("path") String path) { HashMap rs = new HashMap(); ZipUtil.zip(path); rs.put("status", "ok"); return rs; } /** * 解压缩文件或文件夹 * * @param path * @return */ @RequestMapping("unPackage") @ResponseBody public HashMap unPackage(@RequestParam("path") String path) { HashMap rs = new HashMap(); if (path.contains(".zip")) { ZipUtil.unzip(path); } rs.put("status", "ok"); return rs; } /** * 新建文件夹 * * @param path * @return */ @RequestMapping("newPackage") @ResponseBody public HashMap newPackage(@RequestParam("path") String path, @RequestParam("name") String name) { HashMap rs = new HashMap(); FileUtil.mkdir(path + "\\" + name); rs.put("status", "ok"); return rs; } /** * 删除文件夹 * * @param path * @return */ @RequestMapping("delDir") @ResponseBody public HashMap delDir(@RequestParam("path") String path) { HashMap rs = new HashMap(); Console.log("删除目录:" + path); FileUtil.del(path); rs.put("status", "ok"); return rs; } /** * 复制整个文件和文件夹 * * @param oldPath * @param newPath * @return */ @ResponseBody @RequestMapping("copyFileOrDir") public HashMap copyFileOrDir(@RequestParam("oldPath") String oldPath, @RequestParam("newPath") String newPath) { HashMap rs = new HashMap(); FileUtil.copy(oldPath, newPath, true); rs.put("status", "ok"); return rs; } /** * 移动整个文件和文件夹 * * @param oldPath * @param newPath * @return */ @ResponseBody @RequestMapping("rmFileOrDir") public HashMap rmFileOrDir(@RequestParam("oldPath") String oldPath, @RequestParam("newPath") String newPath) { HashMap rs = new HashMap(); FileUtil.copy(oldPath, newPath, true); FileUtil.del(oldPath); rs.put("status", "ok"); return rs; } /** * 修改文件名或目录名 * * @param path * @param newName * @return */ @ResponseBody @RequestMapping("renameFileOrDir") public HashMap renameFileOrDir(@RequestParam("path") String path, @RequestParam("newName") String newName) { HashMap rs = new HashMap(); FileUtil.rename(FileUtil.file(path), newName, false, true); rs.put("status", "ok"); return rs; } } package com.sdy.unzipSystem.controllers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; @RequestMapping("page") @Controller public class PathController { @RequestMapping("/") public String index() { return "/index"; } @RequestMapping("login") public String login() { return "login"; } @RequestMapping("loginValiData") public String loginValiData(@RequestParam("pass") String pass, HttpServletRequest request){ request.getSession().setAttribute("adminpass",pass); return "login"; } @RequestMapping("{page}") public String info(@PathVariable("page") String page){ return page; } } 五,项目总结

系统运行完整,界面简洁大方



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3