【Spring】SpringMVC之上传文件
这里笔者介绍利用SpringMVC上传图片的操作。
步骤
1. 引入jar文件
不仅需要导入开发SpringMVC相关的包,还需要导入 commons-fileupload-1.2.1.jar 和 commons-io-1.3.2.jar 包
2. 配置applicationContext.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
3. 编写html文件:
需要注意: 提交文件, 只能使用POST方式, 并且要指定enctype="multipart/form-data"
例如:
<form action="file.do" method="POST" enctype="multipart/form-data">
请选择您要上传的文件:<br><br>
<input type="file" name="file"/><br>
<input type="submit"/>
</form>
4. 编写接收上传文件的Controller了 ,接收的文件的类型: MultipartFile
例如:
@RequestMapping("/file.do")
public String fileUpload(MultipartFile file){
//上传的文件: file
System.out.println("上传的文件名称为:"+file.getOriginalFilename());
return "result";
}
Demo
下面是一个接受上传图片的Demo,该Demo能够把用户上传的图片存储到部署项目的根目录下面。那么如何查看自己项目的根目录:点击 项目->.metadata->.plugins->org.eclipse.wst.server.core->tmp0->wtpwebapps ,在里面就可以看到部署的项目了。
jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
文件上传成功:${imagePath }
</body>
</html>
fileUploadOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
文件过大, 请上传1M以内的图片
</body>
</html>
fileUploadError.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>上传错误</title>
</head>
<body>
请上传图片类型~ .jpg .png .jpeg
</body>
</html>
error.jsp
文件上传表单:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>文件上传</title>
</head>
<body>
<form action="fileupload.do" method="POST" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
fileUpload.jsp
dispatcherServlet-servlet.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!--指定注解扫描包-->
<context:component-scan base-package="cn"></context:component-scan>
<!--开启注解扫描-->
<mvc:annotation-driven/> <!--配置视图-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
<!--jsp存放的目录-->
<property name="prefix">
<value></value>
</property>
<!--jsp文件的后缀-->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
</beans>
dispatcherServlet-servlet.xml
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>SpringMVC_FileUpLoad</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
web.xml
FileController.java控制器文件:
package cn.xdl.Controller; import java.io.File; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile; @Controller
public class FileController { @RequestMapping("/fileupload.do")
public String fileUpload(MultipartFile file,HttpServletResponse response,HttpServletRequest request){
//判断文件的类型------------------//
String fileName = file.getOriginalFilename();
if(fileName.endsWith(".jpeg")||fileName.endsWith(".png")||fileName.endsWith(".jpg")){
//判断文件的类型------------------//
//上传的是图片
//图片大小的判断---------------------//
System.out.println("上传的图片的大小为: "+ file.getSize());
int size = 1024*1024;
//文件大小是否过大 , true表示过大
boolean flag = false;
if(file.getSize()<Integer.MAX_VALUE){
int fileSize = (int) file.getSize();
if(fileSize>size){
//文件过大
flag = true;
}else{
//大小合适
flag = false;
}
}else{
//文件大小过大
flag = true;
}
//文件过大 则响应错误页面
if(flag){
//文件过大
return "redirect:fileUploadError.jsp";
}else{
//文件大小正常 ,将文件存储到项目当前运行目录下
String dirPath = request.getServletContext().getRealPath("/");//获取当前项目运行时的目录 // 获取到的目录: webContent目录
System.out.println(dirPath);
File imgDir = new File(dirPath+"/images");
if(!imgDir.exists())
imgDir.mkdirs();
try {
fileName = fileName.replace(".", ",");
String newFileName = System.currentTimeMillis()+"."+(fileName.split(",")[fileName.split(",").length-1]);
file.transferTo(new File(imgDir,newFileName ));
request.getSession().setAttribute("imagePath", "<a href='images/"+newFileName+"'>点击查看</a>");
return "redirect:fileUploadOk.jsp";
} catch (Exception e) {
e.printStackTrace();
}
}
}else{
//上传的是其他文件
System.out.println("上传的不是图片");
} return "error";
}
}
FileController.java
【Spring】SpringMVC之上传文件的更多相关文章
- 《SpringMVC从入门到放肆》十五、SpringMVC之上传文件
上一篇我们学习了数据分组校验,已经可以灵活的在项目中进行数据校验了,今天来学习SpringMVC的上传文件功能.相对来说SpringMVC的上传功能,还是比较简单的. 一.添加依赖 <depen ...
- Spring MVC上传文件
Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...
- SpringMVC上传文件
SpringMVC中上传文件还是比较方便的,Spring内置了一些上传文件的支持类,不需要复杂的操作即可上传文件. 文件上传需要两个jar支持,一个是commons-fileupload.jar和co ...
- 2. SpringMVC 上传文件操作
1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...
- Spring MVC上传文件原理和resolveLazily说明
问题:使用Spring MVC上传大文件,发现从页面提交,到进入后台controller,时间很长.怀疑是文件上传完成后,才进入.由于在HTTP首部自定义了“Token”字段用于权限校验,Token的 ...
- springmvc上传文件,抄别人的
SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...
- Spring MVC 上传文件
Spring MVC上传文件需要如下步骤: 1.前台页面,form属性 method设置为post,enctype="multipart/form-data" input的typ ...
- springboot(十七):使用Spring Boot上传文件
上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spring Boot上传文件的小案例. 1.pom包配置 我们使用Spring Boot最新版本1.5.9. ...
- (转)Spring Boot(十七):使用 Spring Boot 上传文件
http://www.ityouknow.com/springboot/2018/01/12/spring-boot-upload-file.html 上传文件是互联网中常常应用的场景之一,最典型的情 ...
随机推荐
- Eclipse关掉项目SVN的链接
有时候 svn 会导致 eclipse 反应很慢,可以关掉 svn项目信息展现. 1. 点击项目文件夹,右键出现项目信息 2. 选择team项 3. Disconnect.
- MonoDB的数据准备
首先是数据的录入,为了分析我们服务器集群的性能,需要准备大量的用户数据,幸运的是mtools提供了mgenerate方法供我们使用.他可以根据一个数据模版向 MongoDB 中插入任意条 json ...
- Docker container常用命令
列出所有的container. docker container ls 启动一个container. docker run –p <host端口>: <container端口> ...
- Windows系统内存分析工具的介绍
Windows系统内存分析工具的介绍(进程管理器,资源管理器,性能监视器, VMMap, RamMap,PoolMon) 微软官方提供多种工具来分析Windows 的内存使用情况,除了系统自带的任 ...
- DOM对象操作html元素1
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- wdcp升级php5.3无法安装PDO_MySQL的解决
重新下载php5.3的升级脚本 wget http://down.wdlinux.cn/in/php_up53.sh 不忙运行,先修改php_up53.sh,查找./configure字段,在这行的末 ...
- VC++中多字节字符集和Unicode之间的互换
在Visual C++.NET中,默认的字符集是Unicode,这和Windows默认的字符集是一致的,不过在老的VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte C ...
- LintCode: Restore IP Address
C++ string::substr(start_pos, length) vector::push_back(element) class Solution { public: vector< ...
- 编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器)
[目录] 不考虑其他进程,cpu画正弦曲线 获取总体cpu利用率 获取多核处理器单个cpu利用率 考虑其他进程,cpu画正弦曲线 下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文 ...
- HDS Truecopy实现原理及项目的选择-诸多案例
copy from:http://www.eygle.com/archives/2009/05/hds_truecopy_dataguard.html 诸多案例:http://wenku.baidu. ...