1.配置pom.xml
<!-- springMVC上传下载jar-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
2.配置MultipartResolver
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上传文件的总大小不能超过指定字节大小 --> <property name="maxUploadSize" value="20000000"/> </bean>
3.创建相应Controller
package com.ma.controller;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
public class UploadAndDownload {
@RequestMapping("/download")
public ResponseEntity<byte[]> test(HttpServletRequest request) throws IOException {
//获得下载文件所在路径 可以指向系统中的任意一个有权访问的路径
String downLoadPath = request.getServletContext().getRealPath("/download");
String fileName = request.getParameter("fileName");
//创建要下载的文件对象
File file = new File("C:/Users/71013/Desktop/JAVA常用/书籍", fileName);
System.out.println(new Date().toString()+" >>>>>>>>>下载资源名为:"+fileName);
//处理一下要下载的文件名字,解决中文乱码
String downFileName = fileName;
//创建响应头信息的对象
HttpHeaders headers = new HttpHeaders();
//设置下载的响应头信息,通过浏览器响应正文的内容是用户要下载的,不用浏览器解析
headers.setContentDispositionFormData("attachment", downFileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//通过响应内容、响应头信息、响应状态来构建一个响应对象并返回
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
@RequestMapping("xiazai")
public String xiazai(HttpServletRequest request) {
HttpSession session = request.getSession();
File file = new File("C:/Users/71013/Desktop/JAVA常用/书籍");
System.out.println(file.isDirectory());
File[] files = file.listFiles();
List<String> allbook = new ArrayList<String>();
for(File f:files){
String fName = f.getName();
allbook.add(fName);
}
session.setAttribute("allbook",allbook);
return "xiazai";
}
@RequestMapping("upload")
public String testUpload(@RequestParam("file") MultipartFile[] files, HttpServletRequest request) {
if (files != null && files.length > 0) {
for (MultipartFile file : files) {
// 保存文件
saveFile(request, file);
}
}
return "success";
}
private void saveFile(HttpServletRequest request, MultipartFile file) {
// 判断文件是否为空
if (!file.isEmpty()) {
try {
//保存的文件路径
//需要的话可以给文件名上加时间戳
String filePath = request.getServletContext().getRealPath("/") + "upload/"
+ file.getOriginalFilename();
File newFile = new File(filePath);
//文件所在目录不存在就创建
if (!newFile.getParentFile().exists()){
newFile.getParentFile().mkdirs();
}
// 转存文件
file.transferTo(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}