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

转载于:https://www.cnblogs.com/hehe520/archive/2007/01/30/6330252.html

利用MultipartFile实现文件上传相关推荐

  1. java利用dropzone多文件上传

    DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库, 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制.文档官网https://www.dropzonejs.com/ ...

  2. Spring Boot 利用WebUploader进行文件上传

    Web Uploader WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势 ...

  3. 使用MultipartFile实现文件上传_SpringMVC

    文章目录 一.单文件上传 1. 创建上传表单 2. 新增配置 3. 编写上传控制类 4. 接收参数 5.文件保存路径 6. 转存文件 二.多文件上传 2.1. 创建上传表单 2.2. 编写上传控制类 ...

  4. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题

    我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jquery form.js可以达到异步上传的目的,但最重要的问题在于,它不能够进行多个文件的上传 ...

  5. java muti实现图片上传_使用MultipartFile实现文件上传

    项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...

  6. Java MultipartFile实现文件上传并为图片加上水印(二)

    防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...

  7. Java MultipartFile实现文件上传(一)

    使用MultipartFile上传至本地或者文件服务器 直接上代码 一.前端上传至服务端(controller层) package com.cargps.common;import com.aliba ...

  8. Koa2利用koa-body实现文件上传需要注意的问题

    koa-body是一款为实现文件上传的中间件. 本文主要就利用该插件实现上传时遇到的问题进行些整理. 1 ctx.request.files.file  ---------->终端提示undef ...

  9. selenium autoit java_selenium+java利用AutoIT实现文件上传

    1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文 ...

最新文章

  1. 计算机地质应用软件,中国地质大学《质软件应用》作业报告.doc
  2. linux磁盘分配方案,安装Linux系统磁盘分配方案.doc
  3. UA MATH566 统计理论 Bayes统计基础
  4. unity服务器文件传输,Unity 3D简单C#文件发送到FPT服务器示例脚本?
  5. Python09 字典
  6. 无比震荡 Fedora Linux把密码输出都落实起来
  7. 【转】Linux单人维护密码
  8. Flutter入门三部曲(3) - 数据传递/状态管理 | 掘金技术征文
  9. sama5d3 环境检测 gpio--yk测试
  10. BZOJ-2005能量采集-数论函数
  11. 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI网络配置)
  12. springboot 上传文件解析入库_十五分钟用Spring Boot实现文件上传功能
  13. java中CS和BS_BS与CS的联系与区别【简】
  14. python解析接口_010 python接口 bs4解析html
  15. python文本处理的几个库_6个高效的语言处理Python库,你用过几个?
  16. 读书笔记 --- 组织结构设计
  17. “阻塞(pend)”与“挂起(suspend)”的区别?
  18. ### LinuxCBT VBOX Edition ###
  19. Google三驾马车——GFS、MapReduce、Bigtable
  20. MAXIMO开发代码记录

热门文章

  1. 【收藏】Linux系统常用命令速查手册(附赠PDF档)
  2. 【干货】常用的Linux 系统备份、恢复命令
  3. 【技术】一个由于时间问题引发的血案
  4. 面对不可避免的故障,我们造了一个“上帝视角”的控制台
  5. python建立回归模型_简单线性回归的Python建模方法
  6. html 自动隐藏属性,隐藏(属性) | hidden (attribute)
  7. php5.2.3 zend3,windows 2008 R2 下 IIS7.5+PHP5.2.17+Mysql5.5.16+Zend3.3.3
  8. ajax form表单提交_开发日志:金数据表单自动提交脚本
  9. 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
  10. 【通知】有三AI书籍和文化产品读者欢迎入群,送4本书!