上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...
在 maven 中使用了 commons-fileupload,使用方法:
(一)上传
1.0 pom 文件依赖
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version> </dependency>
1-1.前端界面
<form action="" enctype="multipart/form-data" class="modifyall"method="post" id="uploadForm"><input type="file" name="file" id="file"style="display: inline-block" class="po"> <input type="submit" class="layui-btn layui-btn-sm "value="上传" id="fileUpload"> </form>
1-2.js
function fileUpload() {var URL = root + "/teacher/teacherUpload";var data = new FormData($('#uploadForm')[0]);$.ajax({url : URL,type : "post",data : data,async : false,cache : false,processData : false,contentType : false,success : function(data) { //返回数据类型为 String if (data == "ok") {location.reload();}if (data == "min") { //如果文件大小小于最小上传值,返回 "min",并将最小值的大小存储在 session 中,通过<input type="hidden"> 和 id 获取最小值var min = $("#min").val();alert("文件必须大于" + min);location.reload();}if (data == "max") { //同最小值alert("文件必须小于" + max);location.reload();}},error : function(data) {alert("操作失败");}}); }
1-3.Controller@ResponseBody @RequestMapping("/teacherUpload")
public String upload(MultipartFile file, HttpServletRequest request, HttpServletRequest reponse)throws IOException {PageData pd = this.getPageData();// 根据考试 id 获取考试信息String testid = pd.getString("testid");List<PageData> list = this.teacherFacade.selectTestById(testid);List<PageData> system = this.teacherFacade.selectSystem();/** 文件大小检测*/long filesize = file.getSize();long minSize = (long) system.get(0).get("file_minsize");long maxSize = (long) system.get(0).get("file_maxsize");// 文件小于最小值或大于最大值;if (minSize > filesize) {session.setAttribute("min", minSize + "Byte");return "min";}if (maxSize < filesize) {session.setAttribute("max", maxSize + "Byte");return "max";}// 保存路径为考试名 String path = request.getSession().getServletContext().getRealPath("/ExamSystem/" + list.get(0).getString("testname"));System.out.println("path>>" + path);String fileName = file.getOriginalFilename();// 将文件名加入到数据库pd.put("submit", fileName);this.teacherFacade.updateaddfile(pd);System.out.println("fileName>>" + fileName);File dir = new File(path, fileName);System.out.println("dir.exists()>>" + dir.exists());if (!dir.exists()) {dir.mkdirs();}System.out.println("dir.exists()>>" + dir.exists()); // MultipartFile自带的解析方法 file.transferTo(dir);return "ok";}
(二)下载
2-1 前端
<form action="downTest" name="form3" id="form3" method="post"><!-- action 是请求映射的地址 --><input type="submit" class="test_down" value="下载查看" /> </form>
2-2 Controller
@ResponseBody@RequestMapping("/downTest")private void down(HttpServletRequest request, HttpServletResponse response) throws IOException {// 根据考试 id 获取考试信息// list = this.studentFacade.selectTestById(testid);ServletContext application = request.getSession().getServletContext();List<PageData> list = (List<PageData>) application.getAttribute("RunTest");System.out.println(list);if (list != null) {String path = request.getServletContext().getRealPath("/") + "ExamSystem/"+ list.get(0).getString("testname") + "/";System.out.println(path);String fileName = list.get(0).getString("submit");fileName = new String(fileName.getBytes(), "ISO8859-1");//解决无法下载中文的问题//System.out.println(path + fileName);File file = new File(path + fileName);//System.out.println(file);if (file != null) {//System.out.println("文件的名字:" + fileName);response.addHeader("content-disposition", "attachment;filename=" + fileName);FileUtils.copyFile(file, response.getOutputStream());}}}
下载是会有中文名无法显示的问题,代码中加入
fileName = new String(fileName.getBytes(), "ISO8859-1");
(三)打包为 zip 下载 (原文地址没找到...)
3-1 前端
<a id="downloadInfo" href="downZip?testid=${test.get('testid')}" title="打包下载">打包下载</a>
3-2 Controller
@ResponseBody@RequestMapping("/downZip")public void downZip(HttpServletRequest request, HttpServletRequest reponse) throws IOException {PageData pd = this.getPageData();//response.setContentType("application/x-msdownload;");// System.out.println(pd);String testid = pd.getString("testid");System.out.println(testid);List<PageData> list = new ArrayList<PageData>();if (this.teacherFacade.selectTestById(testid) != null) {// 归档考试pd.put("test_signal", "3");this.teacherFacade.updateSignal(pd);list = this.teacherFacade.selectTestById(testid);}if (list != null) {try {String testName = list.get(0).getString("testname");String sourcePath = request.getServletContext().getRealPath("/") + "ExamSystem/" + testName;System.out.println(sourcePath);String zipName = testName + ".zip";zipName = new String(zipName.getBytes(), "ISO8859-1");System.out.println(zipName);String zipPath = request.getServletContext().getRealPath("/") + "ExamSystem/" + zipName;File file = new File(sourcePath);// 要被压缩的文件夹File zipFile = new File(zipPath);ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));if (file.isDirectory()) {File[] files = file.listFiles();for (File fileSec : files) {ZipUtil.recursionZip(zipOut, fileSec, "");}}zipOut.close();if (zipFile != null) {System.out.println("文件的名字:" + zipName);response.addHeader("content-disposition", "attachment;filename=" + zipName);FileUtils.copyFile(zipFile, response.getOutputStream());}} catch (Exception e) {e.printStackTrace();}}}
3-3 工具类
package com.ssm.util;import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;public class ZipUtil {/** 文件压缩*/public static void recursionZip(ZipOutputStream zipOut, File file, String baseDir) throws Exception {if (file.isDirectory()) {File[] files = file.listFiles();for (File fileSec : files) {recursionZip(zipOut, fileSec, baseDir + file.getName() + File.separator);}} else {byte[] buf = new byte[1024];InputStream input = new FileInputStream(file);zipOut.putNextEntry(new ZipEntry(baseDir + file.getName()));int len;while ((len = input.read(buf)) != -1) {zipOut.write(buf, 0, len);}input.close();}} }
(四)删除文件夹下的所有内容 原文地址
4-1 获取文件地址
String sourcePath = request.getSession().getServletContext().getRealPath("/") + "ExamSystem/"+ testName;
4-2 删除文件夹下所有内容
File sourceFile = new File(sourcePath); if (sourceFile.exists()) { DeleteFolderUtil.deleteFile(sourceFile); }
4-3 工具类
package com.ssm.util;import java.io.File;public class DeleteFolderUtil {/** 删除文件夹下所有内容*/public static void deleteFile(File file) {if (file.isDirectory()) {File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {deleteFile(files[i]);}}file.delete();}}
转载于:https://www.cnblogs.com/oneMr/p/10039166.html
上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...相关推荐
- 文件上传,下载,预览,删除(File),分页接口
文件上传,下载,预览,删除(File) 1.公共参数方法 1.1公共返回类型定义 1.2 分页接口 1.3公共实体类 1.4 公共的 mapper.java/xml(都放在一起) 1.4.1 File ...
- 【微信小程序云开发】1分钟学会实现上传、下载、预览、删除图片,并且以九宫格展示图片
大家好,我叫小秃僧 这篇文章是讲解云开发如何上传.下载.预览.删除图片,并且以九宫格展示图片的功能 学习目录 1. 实现效果 2.JavaScript代码 3.wxml代码 4.wxss代码 1. 实 ...
- springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...
- 市委组织部项目--word上传,下载,预览,删除
需求:市委组织部考核项目,既然是考核项目就会有很多考核标准要求等,而且各个下属单位对于被考核指标的结果需要上传.这些过程都是通过文档实现的.也就是需要word文档的上传,下载,预览等功能. Word上 ...
- php 多文件上传与下载,php实现文件下载跟多文件上传
php实现文件下载和多文件上传 文件下载: html: 文件上传: html代码:请选择您要上传的文件: 请选择您要上传的文件: 请选择您要上传的文件: 请选择您要上传的文件: 请选择您要上传的文件: ...
- 山东大学项目实训(十七)—— 微信小程序附件上传、下载、预览、删除
目录 附件相关功能再实现 附件业务功能介绍 设计步骤 我的上报查看事件详情 (补充) 附件相关功能再实现 下图为笔者之前所写的博客关于实现的附件上传,但是没有下载.预览和删除.正因为没有下载.预览和删 ...
- MinIO基本使用(实现上传、下载功能)
MinIO基本使用(实现上传.下载功能) 1.简介 2.下载和安装 3.启动服务端 4.创建User和Bucket 4.1 创建User 4.1.1 生成accessKey和secretKey 4.2 ...
- java action 上传文件_JavaWeb框架_Struts2_(七)-----文件的上传和下载
1. 前言 这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 2. 具体内容 2.1Struts2文件上传 2.1.1单文件上传 ...
- Java Web项目中遇到的文件上传与下载问题
(转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html) 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...
最新文章
- java mysql死锁_记一次线上mysql死锁分析(一)
- 在Opendaylight中karaf启动的时候自动安装自己编写的feature
- RE|GoF23种设计模式-动态代理
- CH4402 小Z的袜子(莫队)
- 以太坊代币标准: ERC20、ERC223的介绍与比较
- 如何指南:Apache Drill入门
- 科学证明夜猫子都死得早?稳住,事情不是这样的
- linux系统启动自动启动,linux系统下的自动启动
- 小学生都学Python了,你还不知道怎么开始
- TensorFlow中Variable()和get_variable()
- SQL2005触发器和存储过程
- channel带缓冲区和不带缓冲区的区别
- Win7原版|MSDN Windows7 SP1官方原版ISO镜像下载(全版本)
- 粘贴PDF,删除空行
- DigiCert SSL证书支持中文域名申请吗?
- 自然语言处理 朴素贝叶斯文本分类
- 一个完整的App应该具备哪些功能
- 看看这篇ARM体系结构你就都明白了
- 工具-如何屏蔽浏览器中的广告(Adblock Plus(广告屏蔽器))
- 微信小程序如何实现登录注册带源码