欢迎光临,广州澳门威尼斯人官网,澳门威尼斯城,澳门威尼斯赌场公司!                                           Tel:400-888-9999

当前位置:官网首页 > 新闻动态 > 行业资讯 > 行业资讯

SpringMVC:参考

一个javaWeb项目中,文件澳门威尼斯赌场上传功用几乎是必不行少的,自己在项目开发中也时常会遇到,曾经也没怎么去理它,今日有空学习了一下这方面的常识,所以便将自己学到的SpringMVC中单文件与多文件上传这部分常识做下笔记。

二、单文件上传

1、页面

这儿以一个简略的表单提交为比如,文件上传需求将表单的提交办法设置为post,将enctype的值设置为"multipart/form-data"。

 form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data" 
 input type="file" name="img" br / 
 input type="submit" name="提交" 
 /form 2.控制器

在Controller的处理办法中,运用MultipartFile目标作为参数接纳前端上传过来的文件,详细阐明请看代码注释。

@Controller
@RequestMapping
public class MyController {
 @RequestMapping
 // 这儿的MultipartFile目标变量名跟表单中的file类型的input标签的name相同,//所以结构会自动用MultipartFile目标来接纳上传过来的文件,当然也能够运用@RequestParam指定其对应的参数称号
 public String upload
 throws Exception {
 // 假如没有文件上传,MultipartFile也不会为null,能够经过调用getSize办法获取文件的巨细来判别是否有上传文件
 if  0) {
 // 得到项目在服务器的真实根途径,如:/home/tomcat/webapp/项目名/images
 String path = session.getServletContext.getRealPath;
 // 得到文件的原始称号,如:美人.png
 String fileName = img.getOriginalFilename;
 // 经过文件的原始称号,能够对上传文件类型做约束,如:只能上传jpg和png的图片文件
 if  || fileName.endsWith) {
 File file = new File;
 img.transferTo;
 return "/success.jsp";
 return "/error.jsp";
}3、springmvc.xml装备

运用MultipartFile目标接纳前端上传过来的文件,还需求在springmvc的装备文件中进行如下装备:

 ?xml version="1.0" encoding="UTF-8"? 
 beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd" 
 !-- 留意:CommonsMultipartResolver的id是固定不变的,一定是multipartResolver,不行修正 -- 
 bean id="multipartResolver" 
 !-- 假如上传后呈现文件名中文乱码能够运用该特点处理 -- 
 property name="defaultEncoding" value="utf-8"/ 
 !-- 单位是字节,不设置默许不约束总的上传文件巨细,这儿设置总的上传文件巨细不超越1M -- 
 property name="maxUploadSize" value="1048576"/ 
 !-- 跟maxUploadSize差不多,不过maxUploadSizePerFile是约束每个上传文件的巨细,//而maxUploadSize是约束总的上传文件巨细 -- 
 property name="maxUploadSizePerFile" value="1048576"/ 
 /bean 
 !-- 设置一个简略的反常解析器,当文件上传超越巨细约束时跳转 -- 
 bean 
 property name="defaultErrorView" value="/error.jsp"/ 
 /bean 
 /beans 

上面装备文件中的CommonsMultipartResolver下的特点值装备不是有必要的,你也能够悉数不写。到这儿就能够完成单个文件上传了,下面来看看多文件上传。

三、多文件上传

其实多文件上传也很简略,单文件上传是在Controller的处理办法中运用MultipartFile目标作为参数接纳前端上传过来的文件,而多文件上传则运用MultipartFile目标数组来接纳。

1、页面

该页面中有几个name值相同的file类型的input标签,其他跟单文件上传的页面没差。

 form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data" 
 file 1 : input type="file" name="imgs" br / 
 file 2 : input type="file" name="imgs" br / 
 file 3 : input type="file" name="imgs" br / 
 input type="submit" name="提交" 
 /form 2、控制器

控制器中的处理办法运用MultipartFile[]数组作为接纳参数,并不能直接运用,需求校对参数,详细阐明请看代码注释。

@Controller
@RequestMapping
public class MyController {
 @RequestMapping
 // 这儿的MultipartFile[] imgs表明前端页面上传过来的多个文件,imgs对应页面中多个file类型的input标签的name, // 但结构只会将一个文件封装进一个MultipartFile目标, // 并不会将多个文件封装进一个MultipartFile[]数组,//直接运用会报[Lorg.springframework.web.multipart.MultipartFile;. init 过错, // 所以需求用@RequestParam校对参数,//当然也能够这么写:@RequestParam MultipartFile[] files。
 public String upload
 throws Exception {
 for  {
 if  0) {
 String path = session.getServletContext.getRealPath;
 String fileName = img.getOriginalFilename;
 if  || fileName.endsWith) {
 File file = new File;
 img.transferTo;
 return "/success.jsp";
}

相同的,运用MultipartFile数组接纳前端上传过来的多个文件,也需求在springmvc的装备文件进行装备,详细装备与上述单文件上传的springmvc.xml装备没差,直接复制过来就行。这样,就能够进行多文件上传了。

四、多种文件上传情形归纳

当然,项目开发中,场景或许并不是这么简略,上述的多文件上传是一个个文件挑选后一同上传,那要是我项目中只需一个input标签就能够一次性多个文件呢?又或许一个页面中既要一个个挑选的多文件上传,又要一次性挑选的多文件上传,还要有单文件上传呢?没问题,MultipartFile[]通吃,代码也很easy,下面直接上代码。

1、页面

这儿的 “一次挑选多个文件的多文件上传” 只是在input标签中加上了multiple特点罢了。

 form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data" 
 一次挑选多个文件的多文件上传 : br / 
 input type="file" name="imgs1" multiple br / br / 
 一次挑选一个文件的多文件上传 : br / 
 input type="file" name="imgs2" br / 
 input type="file" name="imgs2" br / br / 
 单文件上传 : br / 
 input type="file" name="imgs3" br / br / 
 input type="submit" name="提交" 
 /form 2、控制器
@Controller
@RequestMapping
public class MyController {
 @RequestMapping
 public String upload
 throws Exception {
 String path = session.getServletContext.getRealPath;
 for  {
 uploadFile;
 for  {
 uploadFile;
 for  {
 uploadFile;
 return "/success.jsp";
 private void uploadFile throws IOException {
 if  0) {
 String fileName = img.getOriginalFilename;
 if  || fileName.endsWith) {
 File file = new File;
 img.transferTo;
}

MultipartFile[]便是如此强壮,不论单个多个,逻辑处理相同,所以主张在项目开发中运用MultipartFile[]作为文件的接纳参数。

五、拓宽

1、MultipartFile类常用的一些办法:

String getContentType//获取文件MIME类型
InputStream getInputStream//获取文件流
String getName //获取表单中文件组件的姓名
String getOriginalFilename //获取上传文件的原名
long getSize //获取文件的字节巨细,单位byte
boolean isEmpty //是否为空
void transferTo2、CommonsMultipartResolver的特点解析
defaultEncoding:表明用来解析request恳求的默许编码格局,当没有指定的时分依据Servlet标准会运用默许值ISO-8859-1。当request自己指明晰它的编码格局的时分就会疏忽这儿指定的defaultEncoding。
uploadTempDir:设置上传文件时的暂时目录,默许是Servlet容器的暂时目录。
maxUploadSize:设置答应上传的总的最大文件巨细,以字节为单位核算。当设为-1时表明无约束,默许是-1。
maxUploadSizePerFile:跟maxUploadSize差不多,不过maxUploadSizePerFile是约束每个上传文件的巨细,而maxUploadSize是约束总的上传文件巨细。
maxInMemorySize:设置在文件上传时答应写到内存中的最大值,以字节为单位核算,默许是10240。
resolveLazily:为true时,启用推延文件解析,以便在UploadAction中捕获文件巨细反常。六、留意

上一篇:没有了

上一篇:没有了