欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用MultipartFile實現(xiàn)文件上傳功能

 更新時間:2017年11月20日 15:48:33   作者:hbcui1984  
這篇文章主要為大家詳細介紹了利用MultipartFile實現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在java中上傳文件似乎總有點麻煩,沒.net那么簡單,記得最開始的時候用smartUpload實現(xiàn)文件上傳,最近在工作中使用spring的MultipartFile實現(xiàn)文件上傳,感覺挺簡單,在這里和大家分享一下。

一.主要有兩個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("上傳失?。何募?#65533;空");  
      }
      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("上傳失?。荷蟼魑募荒転?#65533;空");
      }
      // 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模式,大家應(yīng)該都很熟悉了

  <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,這里要配置映射,并可以設(shè)定最大可上傳文件的大小

<?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"/>
    <!-- 上傳失敗時跳轉(zhuǎn)頁面 -->
    <property name="formView" value="/user/err.jsp"/>
    <!-- 上傳成功時跳轉(zhuǎn)頁面 -->
     <property name="successView" value="/user/confirmation.jsp"/>
  </bean>
</beans>

三.設(shè)定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,現(xiàn)在就可以上傳文件了,挺簡單吧?這里我只列出了基本步驟,至于具體的操作(比如中文問題)可能就需要大家自己再完善完善了.

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)給出分數(shù)數(shù)組得到對應(yīng)名次數(shù)組的方法

    java實現(xiàn)給出分數(shù)數(shù)組得到對應(yīng)名次數(shù)組的方法

    這篇文章主要介紹了java實現(xiàn)給出分數(shù)數(shù)組得到對應(yīng)名次數(shù)組的方法,涉及java針對數(shù)組的遍歷、排序及運算的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Java并發(fā)編程之ReentrantLock實現(xiàn)原理及源碼剖析

    Java并發(fā)編程之ReentrantLock實現(xiàn)原理及源碼剖析

    ReentrantLock 是常用的鎖,相對于Synchronized ,lock鎖更人性化,閱讀性更強,文中將會詳細的說明,請君往下閱讀
    2021-09-09
  • Java?Stream流語法示例詳解

    Java?Stream流語法示例詳解

    這篇文章主要為大家詳細介紹了Java的Stream流,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java如何通過線程解決生產(chǎn)者/消費者問題

    Java如何通過線程解決生產(chǎn)者/消費者問題

    這篇文章主要介紹了Java如何通過線程解決生產(chǎn)者/消費者問題,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Java中Date日期類的使用方法示例詳解

    Java中Date日期類的使用方法示例詳解

    這篇文章主要介紹了Java中Date日期類的使用方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java基礎(chǔ)篇之HashMap指定初始值

    Java基礎(chǔ)篇之HashMap指定初始值

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之HashMap指定初始值的相關(guān)資料,HashMap是Java中常用的數(shù)據(jù)結(jié)構(gòu),它提供了高效的鍵值對存儲和查詢功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Java21新特性Record?Patterns示例詳解

    Java21新特性Record?Patterns示例詳解

    這篇文章主要為大家介紹了Java21新特性Record?Patterns示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • JAVA實現(xiàn)鏈表面試題

    JAVA實現(xiàn)鏈表面試題

    這篇文章主要為大家詳細介紹了JAVA相關(guān)實現(xiàn)鏈表的面試題,代碼實現(xiàn)非常詳細,每一個方法講解也很到位,特別適合參加Java面試的朋友閱讀
    2015-09-09
  • java中 Set與Map排序輸出到Writer詳解及實例

    java中 Set與Map排序輸出到Writer詳解及實例

    這篇文章主要介紹了 java中 Set與Map排序輸出到Writer詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • SpringBoot上傳和下載文件的原理解析

    SpringBoot上傳和下載文件的原理解析

    文件上傳的功能很常見,但是很多人并不清楚文件上傳后的具體原理,接下來通過本文給大家分享SpringBoot上傳和下載文件的原理解析,感興趣的朋友一起看看吧
    2021-07-07

最新評論