SpringMVC文件上传
文件上传
1、文件上传客户端的三要素
- 表单 type="file"
- 表单提交的方式:post
- 表单的enctype属性是多部分表单形式,及enctype="multipart/form-data"
2、单文件上传步骤
① 导入fileupload和io坐标
② 配置文件上传解析器
③ 编写文件上传代码
①
<!--文件上传 -->
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!--servlet-api导入高版本的-->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
② 配置文件上传解析器(springMVC-Servlet)
<!--文件上传配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 上传文件大小上限,单位为字节(10485760=10M) -->
<property name="maxUploadSize" value="10485760"/>
<property name="maxInMemorySize" value="40960"/>
</bean>
③
- 单文件上传
<form action="${pageContext.request.contextPath}/user/fileupload" enctype="multipart/form-data" method="post">
选择文件:<input type="file" name="upload" > <br>
<input type="submit" value="上传">
</form>
@RequestMapping("/fileupload")
//这里MultipartFile对象的名字必须和表单文件选项的名字一样,upload就是经过文件解析器解析request获得的文件项
public String fileupload(HttpServletRequest request, MultipartFile upload) throws Exception {
//获取上传的位置
String path = request.getSession().getServletContext().getRealPath("/uploads/");
//判断该路径是否存在
File file = new File(path);
if(!file.exists()){
//创建文件夹
file.mkdirs();
}
//获取上传文件的名称
String filename = upload.getOriginalFilename();
//把文件名称设置成唯一值:UUID通用唯一标识符(Universally Unique Identifier)
String uuid = UUID.randomUUID().toString().replace("-", "");
filename=uuid+"_"+filename;
//完成文件上传:路径+文件名字
upload.transferTo(new File(path,filename));
return "success";
}
-
多文件上传
- 第一种方法
<form action="${pageContext.request.contextPath}/user/fileupload" enctype="multipart/form-data" method="post"> 选择文件:<input type="file" name="upload" > <br> 选择文件:<input type="file" name="upload1" > <br> <input type="submit" value="上传"> </form>
@RequestMapping("/fileupload") //这里MultipartFile对象的名字必须和表单文件选项的名字一样,upload就是经过文件解析器解析request获得的文件项 public String fileupload(HttpServletRequest request, MultipartFile upload,MultipartFile upload1) throws Exception { //获取上传的位置 String path = request.getSession().getServletContext().getRealPath("/uploads/"); //判断该路径是否存在 File file = new File(path); if(!file.exists()){ //创建文件夹 file.mkdirs(); } //获取上传文件的名称 String filename = upload.getOriginalFilename(); String filename1 = upload1.getOriginalFilename(); //把文件名称设置成唯一值:UUID通用唯一标识符(Universally Unique Identifier) String uuid = UUID.randomUUID().toString().replace("-", ""); String uuid1 = UUID.randomUUID().toString().replace("-", ""); filename=uuid+"_"+filename; filename=uuid1+"_"+filename1; //完成文件上传:路径+文件名字 upload.transferTo(new File(path,filename)); upload.transferTo(new File(path,filename1)); return "success"; }
-
第二种方法
<form action="${pageContext.request.contextPath}/user/fileupload" enctype="multipart/form-data" method="post"> 选择文件:<input type="file" name="upload" > <br> 选择文件:<input type="file" name="upload" > <br> <input type="submit" value="上传"> </form>
@RequestMapping("/fileupload") //这里MultipartFile对象的名字必须和表单文件选项的名字一样,upload就是经过文件解析器解析request获得的文件项 public String fileupload(HttpServletRequest request, MultipartFile [] upload) throws Exception { //获取上传的位置 String path = request.getSession().getServletContext().getRealPath("/uploads/"); //判断该路径是否存在 File file = new File(path); if(!file.exists()){ //创建文件夹 file.mkdirs(); } //获取上传文件的名称 for(MultipartFile multipartFile : upload ){ multipartFile.getOriginalFilename(); //把文件名称设置成唯一值:UUID通用唯一标识符(Universally Unique Identifier) String uuid = UUID.randomUUID().toString().replace("-", ""); filename=uuid+"_"+filename; //完成文件上传:路径+文件名字 upload.transferTo(new File(path,filename)); } return "success"; }
分类:
SSM