java中Spring MVC文件上传的例子

首先需要配置是加入两个 jar包:
commons-fileupload-1.2.2.jar
commons-io-2.1.jar

1.    文件配置

SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver来明确告诉DispatcherServlet如何处理MultipartRequest

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="defaultEncoding" value="utf-8"></property>  
    <property name="maxUploadSize" value="10485760000"></property> 
    <property name="maxInMemorySize" value="40960"></property> 
</bean>
其中属性详解:

defaultEncoding=”UTF-8″ 是请求的编码格式,默认为iso-8859-1
maxUploadSize=”5400000″ 是上传文件的大小,单位为字节
uploadTempDir=”fileUpload/temp” 为上传文件的临时路径

注意这里的文件尺寸实际上只的是所有文件总大小,如果不设置大小,则默认是不限制文件大小
如果配置了文件大小就以为这你需要配置异常信息控制
所以需要配置异常显示

<!– SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException –>
<!– 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 –>

<bean id="exceptionResolver"
    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
            <prop
                key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
        </props>
    </property>
</bean>
如果非要控制返回信息,可以考虑异常处理中返回指定格式数据,例如JSON ??

配置完了页面上一如既往的需要再form表单中增加:enctype=”multipart/form-data”, method=”post”
然后就是需要处理的action了,可以有两种方式

第一种方式:

单文件

public String xxx( @RequestParam MultipartFile file, ...) {  
………………  
}
多文件

public String xxx(@RequestParam MultipartFile[] files, ...) {  
………………  
}
第二种方式:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {    
    // 转型为MultipartHttpRequest:    
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;    
    // 获得文件:    
    MultipartFile file = multipartRequest.getFile(" file ");   
}
示例代码

@RequestMapping("/upload2"  )
public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException {
    //创建一个通用的多部分解析器
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    //判断 request 是否有文件上传,即多部分请求
    if(multipartResolver.isMultipart(request)){
        //转换成多部分request 
        MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
        //取得request中的所有文件名
        Iterator<String> iter = multiRequest.getFileNames();
        while(iter.hasNext()){
            //取得上传文件
            MultipartFile file = multiRequest.getFile(iter.next());
            if(file != null){
                //取得当前上传文件的文件名称
                String myFileName = file.getOriginalFilename();
                //如果名称不为“”,说明该文件存在,否则说明该文件不存在
                if(myFileName.trim() !=""){
                    //定义上传路径
                    String path = request.getSession().getServletContext().getRealPath("/upload")+ file.getOriginalFilename();
                    File localFile = new File(path);

                    //效率比使用字节流转存高的多
                    file.transferTo(localFile);
                }
            }
        }    
    }
    return "/success";
}
MultipartFile类常用的一些方法:
String getContentType()//获取文件MIME类型
InputStream getInputStream()//后去文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest)//保存到一个目标文件中

时间: 2024-10-30 05:15:44

java中Spring MVC文件上传的例子的相关文章

java 缩略图-Java中如何实现文件上传同时将文件首页生成缩略图保存

问题描述 Java中如何实现文件上传同时将文件首页生成缩略图保存 Java中如何实现文件上传同时将文件首页生成缩略图保存: 设想是在Java中模拟打印,将第一页获取生成图片,但是不知道怎么做 解决方案 什么叫文件首页?如果只是生产缩略图,java图像api直接搞定 解决方案二: 可否发下源码!!1976910941@qq.com 谢谢

java中struts2实现文件上传下载功能实例解析_java

本文实例讲述了java中struts2实现文件上传下载功能实现方法.分享给大家供大家参考.具体分析如下: 1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签   复制代码 代码如下: <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">

Spring MVC文件上传

1.加入JAR 由于SpringMVC使用的是commons-fileupload实现,所以除了之前使用到的Spring MVC用到的一些JAR外,还需要下面两个JAR: commons-fileupload-x.x.x.jar和commons-io-x.x.x.jar. 2.配置MultipartResolver处理器(mvc-servlet.xml) <!-- 设置MultipartResolver用以文件上传 --> <!-- p:defaultEncoding请求的编码格式,必须

java中struts2实现文件上传下载功能_java

先谈一谈struts2实现文件的上传和下载实例实现的原理: Struts 2是通过Commons FileUpload文件上传. Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中.从而我们就能够以本地文件方式的操作浏览器上传的文件. 具体实现: 一.创建index.jsp页面 <body> <s:form action="upload" method="p

java中Struts2 的文件上传和下载示例_java

文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type="file"> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤: 在 Jsp 页面的文件上

java中struts2实现文件上传下载功能

1.文件上传 首先是jsp页面的代码 在jsp页面中定义一个上传标签    代码如下 复制代码 <tr>      <td align="right" bgcolor="#F5F8F9"><b>附件:</b></td>      <td bgcolor="#FFFFFF">      <input type="file" name="upl

移动手机中实现端文件上传的例子

input[type="file"] 可以选择手机里的文件,还可以调用拍照功能(某些浏览器不行),Form 表单如下:  代码如下 复制代码 <form id="upload-form" action="/upload" enctype="multipart/form-data" method="post">   <input id="selece-files" typ

深入分析Java中webwork的文件上传机制

点击上传按钮后,webwork的程序流如下: step 1)进入ServletDispatcher.service public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { ........ request = wrapRequest(request); ......... } step2)进入ServletDispatcher.wrapReque

java-spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看

问题描述 spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看 ! 解决方案 没有build到项目中把jar包,你只是直接把jar粘到了lib目录下 解决方案二: 上面有句话是这样说的··········java .lang.NoClassFounderror: org/apache/commns/fileupload/FileItemfactory 我个人认为是这个jar包里没有哪个类里所请求的FileItemfactory 来提供创建文件工厂对象 解决方案三: 错误信息