概述
收藏点赞不迷路 关注作者有好处
文末获取源码
项目编号: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<String, String> upload(@RequestParam("file") MultipartFile file, @RequestParam("path") String path) {
// 判断文件是否为空
HashMap<String, String> 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<String, Object> rs = new HashMap<>();
FileSystemView sys = FileSystemView.getFileSystemView();
File[] files = null;
if (StrUtil.isNotBlank(rootPath)) {
return getFileList(rootPath);
}
files = File.listRoots();
ArrayList<DirDTO> 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<String, Object> rs = new HashMap<>();
FileSystemView sys = FileSystemView.getFileSystemView();
File root = FileUtil.file(path);
root.listFiles();
File[] files = root.listFiles();
ArrayList<DirDTO> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> copyFileOrDir(@RequestParam("oldPath") String oldPath, @RequestParam("newPath") String newPath) {
HashMap<String, Object> rs = new HashMap<>();
FileUtil.copy(oldPath, newPath, true);
rs.put("status", "ok");
return rs;
}
/**
* 移动整个文件和文件夹
*
* @param oldPath
* @param newPath
* @return
*/
@ResponseBody
@RequestMapping("rmFileOrDir")
public HashMap<String, Object> rmFileOrDir(@RequestParam("oldPath") String oldPath, @RequestParam("newPath") String newPath) {
HashMap<String, Object> 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<String, Object> renameFileOrDir(@RequestParam("path") String path, @RequestParam("newName") String newName) {
HashMap<String, Object> 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;
}
}
五,项目总结
系统运行完整,界面简洁大方
最后
以上就是烂漫导师为你收集整理的文件在线压缩与解压|基于Springboot实现文件在线压缩与解压的全部内容,希望文章能够帮你解决文件在线压缩与解压|基于Springboot实现文件在线压缩与解压所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复