一、单个文件上传
前提:需要两个jarcommons-fileupload-1.4.jar commons-io-2.8.0.jar
下载地址https://mvnrepository.com/
1、 jsp页面创建一个form表单,上传文件表单的三步骤:method="post" enctype="multipart/form-data" 和input中的type="file"
2、在容器的application.xml中添加文件上传解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" /> <!--设置字符集 -->
<property name="maxUploadSize" value="2097152" /> <!--上传文件的大小 -->
</bean>
3、创建一个res.propertiesd属性文件
updatePath=F:\\hello\\
4、在controller层调用方法
@Controller
//@RequestMapping("user")
public class TeacherController {
/* 读取文件 */
@Value("${updatePath}")
private String path;
@RequestMapping("uploads")
public ModelAndView upload(ModelAndView mav,String name,@RequestParam("img") MultipartFile file) {
if (!file.isEmpty()) {
String fileName = file.getOriginalFilename();//源文件的名称
String suffix = fileName.substring(fileName.lastIndexOf("."));
String id = UUID.randomUUID().toString();
try {
//保存文件
file.transferTo(new File(path+id+suffix));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
mav.setViewName("index");
mav.addObject("msg", "hi lucky");
return mav;
}
二、多个文件上传
换汤不换药
/多文件上传
//多文件上传
public ModelAndView uploads(ModelAndView mav,String name,@RequestParam("img") MultipartFile[] files) {
if (files.length > 0) {
for(MultipartFile file : files) {
String fileName = file.getOriginalFilename();//源文件的名称
String suffix = fileName.substring(fileName.lastIndexOf("."));
String id = UUID.randomUUID().toString();
try {
//保存文件
file.transferTo(new File(path + id + suffix));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mav.setViewName("index");
mav.addObject("msg", "hi lucky");
}
}else {
mav.setViewName("index");
mav.addObject("msg", "hello");
return mav;
}
return mav;
}
三、文件下载
1、在上传成功的页面增加一个a标签
<a href="download?filename=1.png">下载</a>
//文件下载
@RequestMapping("download")
public void download(HttpServletResponse response,String filename) {
try(
BufferedOutputStream bos = new BufferedOutputStream( response.getOutputStream());
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path+filename));
) {
response.setCharacterEncoding("UTF-8");
response.setContentType("image/jpeg;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;fileName=" + filename);
int len = -1;
byte[] bys = new byte[1024];
while((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}