springMVC.xml文件

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>

//需要导入fileupload包

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

1) 上传单个文件

页面:

<form action="${pageContext.request.contextPath}/upload/uploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="imgFile"/>
<input type="submit" value="提交">
</form>

controller

@RequestMapping(value="uploadFile")
public String uploadFile(MultipartFile imgFile, HttpSession session) throws IllegalStateException, IOException{
 if(imgFile.getSize()==0){
     //没有上传文件
     return error;
   }
   //获取文件名称: temp.jpg
String oFilename = imgFile.getOriginalFilename();
   String path = session.getServletContext().getRealPath("/productImages"); //上传文件保存目录 //设置随机名称,防止文件名称重名
String uuidFilename = UUID.randomUUID().toString().replace("-", "") + oFilename.substring(oFilename.lastIndexOf(".")); imgFile.transferTo(new File(path, uuidFilename)); return "success";
}

2) 上传多个文件

页面:

<form action="${pageContext.request.contextPath}/upload/uploadFiles" method="post" enctype="multipart/form-data">
<input type="file" name="imgFiles"/>
<input type="file" name="imgFiles"/>
<input type="file" name="imgFiles"/>
<input type="submit" value="提交">
</form>

UploadVo

import java.util.List;
import org.springframework.web.multipart.MultipartFile;
public class UploadVo { private List<MultipartFile> imgFiles; public List<MultipartFile> getImgFiles() {
return imgFiles;
}
public void setImgFiles(List<MultipartFile> imgFiles) {
this.imgFiles = imgFiles;
} }

controller

@RequestMapping(value="uploadFiles")
public String uploadFiles(UploadVo vo) throws IllegalStateException, IOException{
//获取上传图片文件集合
List<MultipartFile> imgFiles = vo.getImgFiles(); for (MultipartFile multipartFile : imgFiles) { if(multipartFile.getSize() <= 0 ){//文件大小为0,跳过
continue;
}
//获取文件名称
String filename = multipartFile.getOriginalFilename();
//生成随机文件名
String uuidFilename = UUID.randomUUID().toString().replace("-", "")+filename.substring(filename.lastIndexOf("."));
//将文件写入磁盘中
multipartFile.transferTo(new File("d:/" + uuidFilename));
}
return "test";
}

文件下载

页面:

<a href="${pageContext.request.contextPath}/upload/download?filename=文件12.jpg">下载文件</a>

controller:

//下载文件
@RequestMapping(value="/download")
public ResponseEntity<byte[]> download(@RequestParam("filename") String filename) throws IOException{ //下载显示的文件名,解决中文名称乱码问题
String downloadFilename = new String(filename.getBytes("iso8859-1"), "utf-8");
//创建文件
File file = new File("d:/", downloadFilename); if(!file.exists()){
//文件不存在
return null;
} //创建请求头
HttpHeaders headers = new HttpHeaders(); //通知浏览器以attachment(下载方式)打开图片
headers.setContentDispositionFormData("attachment", filename); //application/octet-stream : 二进制流数据(最常见的文件下载)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //返回ResponseEntity<byte[]>
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}

最新文章

  1. UpdatePanel里的Repeater和DropDownList
  2. 关于char的定义语句,正确的有()
  3. Android MultiDex
  4. java提高篇---HashSet
  5. 【shell】条件判断式
  6. 华为u8800+ root 还是不能删除自带软件
  7. WebGL学习(3) - 3D模型
  8. SpringBootApplication注解 专题
  9. 来一波C#发送邮件
  10. 断路器(Curcuit Breaker)模式
  11. C语言编程(多线程)
  12. unity 中的UGUI 屏蔽鼠标穿透
  13. P1726 上白泽慧音
  14. 【转】Cocos2d-x 3.x基础学习: 总结数学类Vec2/Size/Rect
  15. 【转】Git命令大全(非常齐全)
  16. pythonon ddt数据驱动二(json, yaml 驱动)
  17. 二、Linux学习之centOS的的setup
  18. Javaworkers团队第三周项目总结
  19. uva10689矩阵快速幂
  20. 利用GitHub Pages和Hexo搭建个人博客

热门文章

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:表格单元格使用了 &quot;bg-danger&quot; 类
  2. windows驱动开发-设备扩展
  3. WebView使用详解(二)——WebViewClient与常用事件监听
  4. 「AT2292」Division into Two
  5. 【Go语言系列】2.2、Go语言基本程序结构:关键字与标识符
  6. java string常用的占位符形式
  7. i春秋-百度杯九月场-YeserCMS(cmseasy的UpdateXML注入漏洞)
  8. redis.rpm 安装
  9. JS操作小记
  10. 洛谷 P1929 迷之阶梯