`
zcw_java
  • 浏览: 303751 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring的MultipartFile

 
阅读更多
利用MultipartFile实现文件上传

         在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.

一.主要有两个java类,和一般的servlet放在一起即可.

    1.FileUploadBean.java
    package chb.demo.web;

    import org.springframework.web.multipart.MultipartFile;

    /** *//**
     * @author chb
     *
     */
    public class FileUploadBean ...{

        private MultipartFile file;

        public void setFile(MultipartFile file) ...{
            this.file = file;
        }

        public MultipartFile getFile() ...{
            return file;
        }
    }

    2.FileUploadController.java
    package chb.demo.web;

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.springframework.validation.BindException;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.SimpleFormController;


    /** *//**
     * @author chb
     *
     */
    public class FileUploadController extends SimpleFormController ...{
           
        protected ModelAndView onSubmit(
            HttpServletRequest request,
            HttpServletResponse response,
            Object command,
            BindException errors)...{
           
            try
            ...{
                // cast the bean
                FileUploadBean bean = (FileUploadBean) command;

                // let's see if there's content there
                MultipartFile file = bean.getFile();
                                  
                if (file == null) ...{
                    throw new Exception("上传失败:文件为�空");   
                }
                if(file.getSize()>10000000)       
                ...{
                    throw new Exception("上传失败:文件大小不能超过10M");           
                }
                //得到文件�名
                String filename=file.getOriginalFilename();       
               
                if(file.getSize()>0)...{               
                    try ...{
                        SaveFileFromInputStream(file.getInputStream(),"D:/",filename);
                    } catch (IOException e) ...{
                        System.out.println(e.getMessage());
                        return null;
                    }
                }
                else...{
                    throw new Exception("上传失败:上传文件不能为�空");
                }
                // well, let's do nothing with the bean for now and return:
                try ...{
                    return super.onSubmit(request, response, command, errors);
                   
                } catch (Exception e) ...{
                    System.out.println(e.getMessage());
                    return null;
                }
            }
            catch(Exception ex)
            ...{
                System.out.println(ex.getMessage());
                return null;
            }
        }  
       
        /** *//**保存文件
         * @param stream
         * @param path
         * @param filename
         * @throws IOException
         */
        public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException
        ...{     
            FileOutputStream fs=new FileOutputStream( path + "/"+ filename);
            byte[] buffer =new byte[1024*1024];
            int bytesum = 0;
            int byteread = 0;
            while ((byteread=stream.read(buffer))!=-1)
            ...{
               bytesum+=byteread;
               fs.write(buffer,0,byteread);
               fs.flush();
            }
            fs.close();
            stream.close();     
        }      
    }

二.配置文件中如下配置:

    1.web.xml,利用spring mvc模式,大家应该都很熟悉了
        <servlet>
            <servlet-name>chb</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>chb</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>

    2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <!-- Multi-Action 用来标识method的变量名定义-->
        <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
            <property name="paramName">
                <value>action</value>
            </property>
            <property name="defaultMethodName">
                <value>index</value>
            </property>
        </bean>
       
        <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- one of the properties available; the maximum file size in bytes -->
            <property name="maxUploadSize" value="10000000"/>
        </bean>
       

        <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
              <props>
                <prop key="/upload.do">fileUploadController</prop>
              </props>
            </property>
        </bean>
       
        <bean id="fileUploadController" class="chb.demo.web.FileUploadController">
            <property name="commandClass" value="chb.demo.web.FileUploadBean"/>
            <!-- 上传失败时跳转页面 -->
            <property name="formView" value="/user/err.jsp"/>
            <!-- 上传成功时跳转页面 -->
             <property name="successView" value="/user/confirmation.jsp"/>
       </bean>
    </beans>

三.设定jsp页面

     <form id="form1" method="post" action="upload.do" enctype="multipart/form-data">               
        <tr>
            <td width="25%" align="right">上传文件:</td>
            <td><input id="file" type="file" NAME="file" style="width:300px;"></td>
        </tr>
        <tr align="center" valign="middle">
            <td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td>
        </tr>
    </form>   

          ok,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.
分享到:
评论

相关推荐

    Spring MultipartFile 文件上传【注解】& JQuery uploader plugin

    在本文中,我们将深入探讨Spring框架中的`MultipartFile`接口,它是处理文件上传的核心组件。同时,我们还将介绍如何结合JQuery的uploader插件来实现一个用户友好的前端文件上传功能。 Spring `MultipartFile` 是...

    Spring Multipart工作原理(文件上传到服务器)

    在Web应用中,文件上传功能是常见的需求之一,Spring框架提供了对文件上传的支持,主要基于MultipartFile接口。本文将深入探讨Spring Multipart的工作原理,以及如何实现文件从客户端上传到服务器的过程。 首先,...

    SpringMVC 上传文件 MultipartFile 转为 File的方法

    在SpringMVC框架中,处理文件上传通常涉及`MultipartFile`接口,它是Spring提供的一个用于处理上传文件的数据类型。当用户通过HTTP请求上传文件时,SpringMVC会将这些文件封装成`MultipartFile`对象。然而,在实际...

    File 转 MultipartFile 和MultipartFile的maven配置

    在Java Web开发中,我们经常会遇到需要处理上传文件的情况,其中`MultipartFile`是Spring MVC框架提供的一种用于处理文件上传的接口。然而,在实际操作中,我们可能需要将已有的`File`对象转换为`MultipartFile`,...

    安卓打开相机相册功能实现,并通过SpringBoot对接Retrofit2上传图片(@RequestBody转变为MultiPartFile全流程,低门槛实现系列)

    需求分析: 通过安卓打开相机相册,使用SSM框架搭建后台接口,前端使用retrofit2进行文件传输 注:低门槛实现系列就是不涉及过深的知识点,不做过多的异常捕获,不过滤版本不判空,面向小白。 ...

    详解SpringMVC使用MultipartFile实现文件的上传

    在SpringMVC中,`MultipartFile`接口是处理文件上传的核心组件。本文将深入探讨如何使用`MultipartFile`实现文件上传,以及如何结合FTP服务器进行跨服务器文件传输。 首先,要启用SpringMVC的文件上传功能,我们...

    通过import org.springframework.web.multipart.MultipartFile;上传文件

    通过import org.springframework.web.multipart.MultipartFile;上传文件的一个工具性的jar.

    多文件上传MultipartFile

    然后,后台接收这些文件时,Spring MVC会自动将上传的文件封装成`MultipartFile`对象,放入一个`MultipartFile[]`数组中。 处理`MultipartFile`数组时,我们可以通过遍历数组来分别处理每个文件。每个`...

    java POI 通过MultipartFile删除Excel文件解析写入数据库

    在Web开发中,我们经常需要处理用户上传的文件,MultipartFile是Spring框架提供的一种处理文件上传的接口,它使得我们可以方便地接收和处理上传的Excel文件。下面我们将深入探讨如何使用Java POI和MultipartFile来...

    MultipartFile上传图片(多图片上传)

    在Java开发中,MultipartFile是Spring框架提供的一种用于处理上传文件的接口,它使得开发者能够方便地接收HTTP请求中的多部分(Multipart)数据,其中包括图片的上传。在本场景下,我们将探讨如何实现多图片上传的功能...

    SpringCloud接收文件

    在Gateway中,可以利用Spring MVC的`@RequestParam`或`MultipartFile`注解来接收文件。 2. **Controller处理文件**:在Spring MVC的Controller中,可以定义一个处理文件上传的方法。例如: ```java @PostMapping...

    Android上传单文件和多文件(后台使用MultipartFile)

    在Java后端,我们可以使用Spring的`@RequestParam("file") MultipartFile[] files`来接收这些文件。 对于单文件上传,一个简单的例子如下: ```java File file = ... // 获取到的文件 RequestBody requestBody = ...

    spring-web-2.5.jar

    org.springframework.web.multipart.MultipartFile.class org.springframework.web.multipart.MultipartHttpServletRequest.class org.springframework.web.multipart.MultipartResolver.class org.springframework....

    org.springframework.web的jar包.zip

    《Spring框架Web模块详解——聚焦于WebSocket服务器端点支持》 在Java开发领域,Spring框架以其强大的功能和灵活的设计闻名,而`org.springframework.web`包是Spring框架中的一个重要部分,它提供了处理HTTP请求和...

    Spring5 文件上传所需的jar包

    public ResponseEntity&lt;?&gt; handleFileUpload(@RequestParam("file") MultipartFile file) { // 处理文件上传逻辑 } ``` 在实际应用中,我们还需要处理可能出现的异常,比如文件过大、文件类型不匹配等问题。同时,...

    springcloud处理文件上传

    这个微服务可以使用Spring Boot的MultipartFile接口来接收上传的文件,并将其保存到本地存储或云存储服务。 为了实现负载均衡,Spring Cloud提供了Ribbon组件。Ribbon是一个客户端侧的负载均衡器,它可以自动将请求...

    spring 4.3.7及以上的jar包

    在文件上传和下载功能上,Spring MVC提供了MultipartFile接口,使得处理文件上传变得简单。同时,Spring的IoC容器能够管理临时目录和文件资源,方便文件下载操作。 综上所述,Spring 4.3.7及以上的jar包包含了...

    spring jar包下载 含multipart file

    文件上传下载 根据multipart类的方法: 即multipartFile.transferTo(file); 就完成文件上传

    spring-web-3.0.6.release.jar.zip

    通过MultipartFile接口,开发者可以方便地处理用户上传的文件,同时也能轻松实现文件的下载服务。 七、安全性与认证 Spring Security是Spring生态系统的一部分,它可以与Spring Web紧密结合,提供身份验证、授权、...

    解决springboot MultipartFile文件上传遇到的问题

    解决 Spring Boot MultipartFile 文件上传遇到的问题 基于 Spring Boot 框架的 MultipartFile 文件上传经常会遇到一些问题,本文将介绍如何解决这些问题,希望对大家有所帮助。 问题一:ajax 传过去的参数在 ...

Global site tag (gtag.js) - Google Analytics