`

利用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,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.

分享到:
评论

相关推荐

    利用MultipartFile实现文件上传功能

    "利用MultipartFile实现文件上传功能详解" 在Java Web开发中,文件上传是一个常见的需求,而MultipartFile是Spring框架中一个非常强大的工具,用于处理文件上传。本文将详细介绍如何使用MultipartFile实现文件上传...

    多文件上传MultipartFile

    总结来说,`MultipartFile`是Spring框架处理多文件上传的核心工具,结合前端的文件选择和`webuploader`等库可以实现断点续传功能,提升用户体验。在后台处理文件时,通常需要先执行数据库操作,确保数据一致性,然后...

    Java利用MultipartFile实现上传多份文件的代码

    Java 利用 MultipartFile 实现上传多份文件的代码 Java 中实现上传多份文件的代码是非常实用的技术,以下是关于 MultipartFile ...我们可以通过 MultipartFile 实现上传多份文件,并使用其提供的方法来处理文件上传。

    okhttp多文件上传

    本知识点将详细介绍如何利用OkHttp实现多文件上传,并结合服务器端代码来理解整个流程。 一、OkHttp简介 OkHttp是由Square公司开发的一个HTTP客户端库,它提供了一个简单、高效且强大的接口来处理网络请求。OkHttp...

    基于nio实现的多文件上传源码

    本主题“基于nio实现的多文件上传源码”探讨的是如何利用Java NIO来实现高效的多文件上传功能,尤其对于小文件数量较大的情况。 首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写...

    File 转 MultipartFile 和MultipartFile的maven配置

    然而,在实际操作中,我们可能需要将已有的`File`对象转换为`MultipartFile`,以便利用Spring MVC的文件上传功能。下面将详细介绍如何实现`File`到`MultipartFile`的转换以及相关的Maven配置。 ### 1. `File`转`...

    SpringBoot 实现文件上传到本地目录 并返回可访问的文件地址.rar

    本项目的核心是利用Spring Boot的MVC特性来处理文件上传请求,以及构建一个安全、可靠且易于访问的文件服务。下面我们将详细探讨这个过程中的关键知识点。 1. **Spring Boot MVC**: Spring Boot MVC是Spring框架...

    java springboot 切割分片上传大文件

    在Java SpringBoot框架中,处理大文件上传是一个常见的需求,特别是在大数据时代,用户可能需要上传GB级别的文件。传统的单次上传方式可能会面临超时、内存溢出等问题,因此,采用切割分片上传的方式能有效解决这些...

    servlet实现文件上传功能

    在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...

    Labview FTP上传文件

    Labview FTP上传文件是利用Labview(Laboratory Virtual Instrument Engineering Workbench)这一强大的图形化编程环境,通过FTP(File Transfer Protocol)协议实现文件的远程传输。FTP是一种标准网络协议,用于在...

    实现各种类型文件的多文件上传

    前端利用layui的upload组件提供友好的用户界面,后端借助SpringBoot的`MultipartFile`处理文件上传逻辑,两者协同工作,实现各种类型文件的多文件上传。这种技术方案在实际的Web应用开发中具有广泛的应用价值。

    SpringBoot(31) 整合MinIO实现文件上传与下载

    4. **定义服务接口**:创建一个服务接口,包含文件上传和下载的方法。例如: ```java public interface FileStorageService { void uploadFile(MultipartFile file); Resource downloadFile(String fileName); ...

    java使用uploadify插件实现多文件上传完整demo

    总之,利用Uploadify插件,结合Java后端处理,可以轻松实现多文件上传、进度显示和取消上传等功能。这个完整的demo项目提供了一个可以直接使用的模板,对于有文件上传需求的开发者来说,是一个很好的起点。

    springboot-layui调用文件服务器接口实现文件上传下载.docx

    - `@PostMapping("/upload")` 方法接收一个`MultipartFile`类型的参数`file`,这是Spring MVC处理文件上传的核心类。首先,我们定义一个外部文件服务器的上传接口URL,然后使用`RestTemplate`来调用这个接口。 - ...

    使用io实现文件上传

    标题“使用io实现文件上传”指的是利用Java的I/O机制处理客户端上传的文件数据。 首先,我们需要了解Java I/O流的基本概念。I/O流是Java提供的处理输入和输出数据的一种机制,分为字节流和字符流两大类。字节流处理...

    SpringMVC文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    android 文件上传(多个或单个),图片上传

    总结,Android的文件上传涉及文件选择、读取、压缩、转换为流,以及利用Multipart请求将数据发送到服务器。同时,配合JSON数据可以传递更多的业务信息。理解并熟练运用这些技术,能够帮助开发者实现高效且稳定的文件...

    springboot 实现超大文件上传实例

    2. **MultipartFile处理**:SpringBoot提供了`MultipartFile`接口,用于处理文件上传。它封装了文件内容、原始文件名、文件类型等信息,便于在服务器端进行操作。 3. **配置文件上传限制**:在SpringBoot中,可以...

    vue+springboot 大文件上传

    在大文件上传方面,SpringBoot 提供了支持文件上传的API,我们可以利用这些API来处理文件接收和存储。 ### 分片上传 大文件分片上传是一种优化策略,通过将大文件拆分为多个小块(片段)进行上传,然后在服务器端...

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告.docx

    本实验报告将详细阐述如何利用SpringMVC实现文件上传与下载的功能。 首先,文件上传的核心在于HTML表单(form)的正确配置。在创建用于上传文件的表单时,需要指定`enctype`属性为`multipart/form-data`。这是因为...

Global site tag (gtag.js) - Google Analytics