SpringMVC文件上传实现
本文内容纲要:
SpringMVC(注解)上传文件需要注意的几个地方:
1、form的enctype="multipart/form-data",这个是上传文件必须的
2、applicationContext.xml配置:
<!--SpringMVC上传文件时,需要配置MultipartResolver处理器-->
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<propertyname="defaultEncoding"value="UTF-8"/>
<!--指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和-->
<propertyname="maxUploadSize"value="200000"/>
<!--最大内存大小(10240)-->
<propertyname="maxInMemorySize"value="40960"/>
</bean>
<!--SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException-->
<!--该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中-->
<beanid="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<propertyname="exceptionMappings">
<props>
<!--遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面-->
<propkey="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
用于上传的表单页面/WEB-INF/jsp/upload.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<scripttype="text/javascript"src="../js/jquery-1.7.1.min.js"></script>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>上传图片</title>
</head>
<body>
<formaction="<%=request.getContextPath()%>/upload/filesUpload"method="POST"enctype="multipart/form-data">
yourfile:<inputtype="file"name="myfiles"/><br/>
yourfile:<inputtype="file"name="myfiles"/><br/>
<inputtype="submit"value="上传图片"/>
</form>
</body>
</html>
上传文件内容过大时的提示页面/WEB-INF/jsp/error_fileupload.jsp
<%@pagelanguage="java"pageEncoding="UTF-8"%>
<h1>文件过大,请重新选择</h1>
上传文件的核心UploadController类
packagecom.ljq.web.controller.annotation;
importjava.io.File;
importjavax.servlet.http.HttpServletRequest;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestParam;
importorg.springframework.web.multipart.MultipartFile;
/**
*上传图片
*
*@authorAdministrator
*
*/
@Controller
@RequestMapping("/upload")
publicclassUploadController{
@RequestMapping("/toUpload")
publicStringtoUpload(){
return"/upload";
}
/***
*保存文件
*
*@paramfile
*@return
*/
privatebooleansaveFile(HttpServletRequestrequest,MultipartFilefile){
//判断文件是否为空
if(!file.isEmpty()){
try{
//保存的文件路径(如果用的是Tomcat服务器,文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\upload\\文件夹中)
StringfilePath=request.getSession().getServletContext()
.getRealPath("/")+"upload/"+file.getOriginalFilename();
FilesaveDir=newFile(filePath);
if(!saveDir.getParentFile().exists())
saveDir.getParentFile().mkdirs();
//转存文件
file.transferTo(saveDir);
returntrue;
}catch(Exceptione){
e.printStackTrace();
}
}
returnfalse;
}
/**
*上传图片
*
*@paramfiles
*@paramrequest
*@return
*/
@RequestMapping("/filesUpload")
publicStringfilesUpload(@RequestParam("myfiles")MultipartFile[]files,
HttpServletRequestrequest){
if(files!=null&&files.length>0){
for(inti=0;i<files.length;i++){
MultipartFilefile=files[i];
//保存文件
saveFile(request,file);
}
}
//重定向
return"redirect:/upload/toUpload";
}
}
到此文件上传开发就结束了。
MultipartFile类常用的一些方法:
StringgetContentType()//获取文件MIME类型
InputStreamgetInputStream()//返回文件流
StringgetName()//获取表单中文件组件的名字
StringgetOriginalFilename()//获取上传文件的原名
longgetSize()//获取文件的字节大小,单位byte
booleanisEmpty()//是否为空
voidtransferTo(Filedest)//保存到一个目标文件中
本文内容总结:
原文链接:https://www.cnblogs.com/linjiqin/p/4448990.html