SpringMVC实战-多文件上传
来源:互联网 发布:网络电视点播要钱吗 编辑:程序博客网 时间:2024/06/07 06:58
Spring MVC支持文件上传,它使用的是类CommonsMulitpartResolver。
1、配置MultipartResolver
想要使用Spring的文件上传功能,首先要在上下文中配置MultipartResolver。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8" p:maxUploadSize="5242880" p:uploadTempDir="fileUpload/temp"/>
- defaultEncoding是请求的编码格式;
- maxUploadSize是上传文件的大小限制,单位是字节;
- uploadTempDir是上传文件的临时路径,上传完成后临时目录中的临时文件会被自动删除。
为了能使CommonsMulitpartResolver正确工作,还必须在pom.xml文件中添加两个依赖:
<!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
2、编写controller和页面
此处采用的方法是在浏览器中访问URL:”/fileUploadPage”,返回视图fileupload.jsp,然后这个页面中是一个表单,将文件提交到URL:”/upload”中。
@RequestMapping(value="/fileUploadPage") public String fileUploadPage(){ return "user/fileUpload"; } @RequestMapping(value="/upload") public String fileUpload(@RequestParam("name")String name, @RequestParam("file")MultipartFile file)throws Exception{ if(!file.isEmpty()){ file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));//将上传的文件保存到磁盘中 return "redirect:success.html"; }else{ return "redirect:fail.html"; } }
Spring MVC会将上传的文件绑定到MultipartFile对象中,MultipartFile提供了操作文件的方法。具体方法有:
1. byte[] getBytes() : 获取文件内容。
2. String getContentType() : 获取文件MIME类型,如image/jpeg、text/plain等。
3. InputStream getInputStream():获取文件流。
4. String getName() : 获取表单中文件组件的名字。
5. String getOriginalFileName() : 获取上传文件的原名。
6. long getSize() : 获取文件的大小,单位是byte。
7. boolean isEmpty() : 判断是否有上传的文件.
8. void transferTo(File dest) : 将该文件保存到一个目标文件中,也就是说在此之前它是在内存中的。
负责上传文件的表单的编码类型必须是”multipart/form-data”。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>上传图片</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>请选择上传的图片:</h1> <form method="post" action="<c:url value='/upload'/>" enctype="multipart/form-data"> <input type="text" name="name"/> <input type="file" name="file"/> <input type="submit"/> </form> </body></html>
如何上传多个文件
controller这边只需要把file改成file数组就可以了,上传单个文件时也可以用数组的。
@RequestMapping(value="/upload") public String fileUpload(@RequestParam("name")String name, @RequestParam("file")MultipartFile[] file)throws Exception{ for(int i = 0 ; i < file.length; i++){ if(!file[i].isEmpty()){ file[i].transferTo(new File("D:/temp/" + file[i].getOriginalFilename())); }else{ return "redirect:fail.html"; } } return "redirect:success.html"; }
多个文件都在数组里,依次遍历就可以了。前端页面就是在一个表单里面上传多个文件。
- SpringMVC实战-多文件上传
- SpringMVC多文件上传
- springmvc 多文件上传
- springmvc多文件上传
- springmvc多文件上传
- SpringMVC多文件上传
- springMVC 多文件上传
- springmvc多文件上传
- springMVC 多文件上传
- springMVC 多文件上传
- SpringMVC文件上传 多文件
- SpringMVC文件上传 多文件
- SpringMVC文件上传 多文件上传实例
- SpringMVC文件上传 多文件上传实例
- SpringMVC—多文件上传
- SpringMVC多文件上传实例
- springmvc实现多文件上传
- springMVC上传多个文件
- 机器学习(2.100)数据知识积累——香农熵
- 关于主键和外键,我犯傻了
- 自定义事件
- 手把手教你给一个iOS app配置多个环境变量
- 290. Word Pattern
- SpringMVC实战-多文件上传
- 原创JS
- FPGA/CPLD设计的几个常用技巧
- weblogic项目部署成功后,访问报403或者404错误
- linux 基本命令之AWK 算sum/avg/max/min
- 监听器Listener
- 原创盒模型
- LightOJ 1138 - Trailing Zeroes (III)【二分】
- Intellij IDEA svn的使用记录