Spring MVC文件上传

spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象。
 
两个jar包:
1、com.springsource.org.apache.commons.fileupload-1.2.0.jar
2、com.springsource.org.apache.commons-io-1.4.0.jar
 
处理方法:
1.添加上传拦截,可指定上传的大小
<!-- 上传拦截,如最大上传值及最小上传值 -->
    <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="100000" />
    </bean>
 
2.添加java后台处理的API
@RequestMapping(value = "/form", method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
byte[] bytes = file.getBytes();
// 去理上传写文件代码
 
}
 
具体操作:
FileUploadController.java文件
 
package  org.spring.mvc.upload;

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

import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;
import  org.spring.mvc.HelloWorldController;
import  org.springframework.stereotype.Controller;
import  org.springframework.web.bind.annotation.RequestMapping;
import  org.springframework.web.bind.annotation.RequestMethod;
import  org.springframework.web.bind.annotation.RequestParam;
import  org.springframework.web.multipart.MultipartFile;
import  org.springframework.web.multipart.MultipartHttpServletRequest;

/**
* 上传文件
* @author chenyw
*
*/

@Controller
@RequestMapping(value   =   "/toFileUpload")
public   class  FileUploadController {
     private  Logger logger   =  LoggerFactory.getLogger(HelloWorldController. class);

     /**
     * 单文件上传
     * @param name @RequestParam 取得name字段的值
     * @param file 文件
     * @return
     * @throws IOException
     */

    @RequestMapping(value   =   "/oneFileUpload", method   =  RequestMethod.POST)
     public  String handleFormUpload(@RequestParam( "name")
    String name, @RequestParam( "file")
    MultipartFile file)   throws  IOException {

        logger.info( "name:" +name);
        logger.info( "上传文件:" +file.getOriginalFilename());
         if  ( !file.isEmpty()) {
              this.copyFile(file.getInputStream(), file.getOriginalFilename());

        } 
         return   "fileUpload/success";
    }

       /**
       * 多文件上传
       * @param request
       * @param name
       * @return
       * @throws Exception
       */

      @RequestMapping(value   =   "/multipartFileUpload",method   =  RequestMethod.POST)
          public  String upload2(
            MultipartHttpServletRequest request ,
            @RequestParam( "name") String name     // 页面上的控件值
            )   throws  Exception {
          List <MultipartFile >  files   =  request.getFiles( "file");
           for(   int  i = 0; i <files.size() ;i ++){
                if( !  files.get(i).isEmpty()) {
                   logger.info( "上传文件:" +files.get(i).getOriginalFilename());
                   this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename());
               }
          }
          logger.info( "success");
           return   "fileUpload/success";
         }

       /**
       * 写文件到本地
       * @param in
       * @param fileName
       * @throws IOException
       */

       private   void  copyFile(InputStream in,String fileName)   throws  IOException{
          FileOutputStream fs   =   new  FileOutputStream( "d:/upload/"
                     +  fileName);
             byte[] buffer   =   new   byte[ 1024   *   1024];
             int  bytesum   =   0;
             int  byteread   =   0;
             while  ((byteread   =  in.read(buffer))   !=   - 1) {
                bytesum   +=  byteread;
                fs.write(buffer,   0, byteread);
                fs.flush();
            }
            fs.close();
            in.close();
      }


}
 
 
 
单文件上传页面oneFileUpload.jsp
 
< %@ page language = "java"   import = "java.util.*"  pageEncoding = "GBK" % >
< %
String path   =  request.getContextPath();
String basePath   =  request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() +path + "/";
% >

< !DOCTYPE HTML PUBLIC   "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html >
   <head >
     <base href = "<%=basePath%>" >

     <title >My JSP   'oneFileUpload.jsp'  starting page < /title >

     <meta http -equiv = "pragma"  content = "no-cache" >
     <meta http -equiv = "cache-control"  content = "no-cache" >
     <meta http -equiv = "expires"  content = "0" >    
     <meta http -equiv = "keywords"  content = "keyword1,keyword2,keyword3" >
     <meta http -equiv = "description"  content = "This is my page" >
     < ! --
     <link rel = "stylesheet"  type = "text/css"  href = "styles.css" >
     -- >

   < /head >

   <body >
    This is my onefileUpload page.   <br >
     <form method = "POST"  action = "toFileUpload/oneFileUpload"  enctype = "multipart/form-data" >
         <input type = "text"  name = "name" / >
         <input type = "file"  name = "file" / >
         <input type = "submit" / >
     < /form >
   < /body >
< /html >
 
 
多文件上传页面multipartFileUpload.jsp
 
< %@ page language = "java"   import = "java.util.*"  pageEncoding = "GBK" % >
< %
String path   =  request.getContextPath();
String basePath   =  request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() +path + "/";
% >

< !DOCTYPE HTML PUBLIC   "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html >
   <head >
     <base href = "<%=basePath%>" >

     <title >My JSP   'multipartFileUpload.jsp'  starting page < /title >

     <meta http -equiv = "pragma"  content = "no-cache" >
     <meta http -equiv = "cache-control"  content = "no-cache" >
     <meta http -equiv = "expires"  content = "0" >    
     <meta http -equiv = "keywords"  content = "keyword1,keyword2,keyword3" >
     <meta http -equiv = "description"  content = "This is my page" >
     < ! --
     <link rel = "stylesheet"  type = "text/css"  href = "styles.css" >
     -- >

   < /head >

   <body >
    This is multipartFileUpload page.   <br >
     <form method = "POST"  action = "toFileUpload/multipartFileUpload"  enctype = "multipart/form-data" >
         <input type = "text"  name = "name" / > <br >
         <input type = "file"  name = "file" / > <br >
         <input type = "file"  name = "file" / > <br >
         <input type = "submit" / > <br >
     < /form >
   < /body >
< /html >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值