最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Servlet實現(xiàn)文件上傳,可多文件上傳示例

 更新時間:2016年12月05日 14:50:43   作者:hzc543806053  
本篇文章主要介紹了Servlet實現(xiàn)文件上傳,可多文件上傳示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、Servlet實現(xiàn)文件上傳,需要添加第三方提供的jar包

下載地址:

1) commons-fileupload-1.2.2-bin.zip:  點擊打開鏈接

2)  commons-io-2.3-bin.zip:    點擊打開鏈接 

接著把這兩個jar包放到 lib文件夾下:

二:文件上傳的表單提交方式必須是POST方式,

編碼類型:enctype="multipart/form-data",默認是 application/x-www-form-urlencoded

比如:

<form action="FileUpLoad"enctype="multipart/form-data"method="post">

三、舉例:

1.fileupload.jsp

<%@ page language="java" import="javautil*" pageEncoding="UTF-8"%> 
<% 
String path = requestgetContextPath(); 
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 01 Transitional//EN"> 
<html> 
 <head> 
  <base href="<%=basePath%>"> 
   
  <title>My JSP 'fileuploadjsp' 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="stylescss"> 
  --> 
 
 </head> 
  
 <body> 
   <!-- enctype 默認是 application/x-www-form-urlencoded --> 
   <form action="FileUpLoad" enctype="multipart/form-data" method="post" > 
     
        用戶名:<input type="text" name="usename"> <br/> 
        上傳文件:<input type="file" name="file1"><br/> 
       上傳文件: <input type="file" name="file2"><br/> 
       <input type="submit" value="提交"/>     
   </form>     
 </body> 
</html> 

2.實際處理文件上傳的 FileUpLoad.java

package comservletfileupload; 
import javaioFile; 
import javaio*; 
import javaioIOException; 
import javaioPrintWriter; 
import javautilList;  
import javaxservletServletException; 
import javaxservlethttpHttpServlet; 
import javaxservlethttpHttpServletRequest; 
import javaxservlethttpHttpServletResponse; 
import orgapachecommonsfileuploadFileItem; 
import orgapachecommonsfileuploadFileUploadException; 
import orgapachecommonsfileuploaddiskDiskFileItemFactory; 
import orgapachecommonsfileuploadservletServletFileUpload; 
 
/** 
 * 
 * @author Administrator 
 * 文件上傳 
 * 具體步驟: 
 * 1)獲得磁盤文件條目工廠 DiskFileItemFactory 要導包 
 * 2) 利用 request 獲取 真實路徑 ,供臨時文件存儲,和 最終文件存儲 ,這兩個存儲位置可不同,也可相同 
 * 3)對 DiskFileItemFactory 對象設(shè)置一些 屬性 
 * 4)高水平的API文件上傳處理 ServletFileUpload upload = new ServletFileUpload(factory); 
 * 目的是調(diào)用 parseRequest(request)方法 獲得 FileItem 集合list , 
 *   
 * 5)在 FileItem 對象中 獲取信息,  遍歷, 判斷 表單提交過來的信息 是否是 普通文本信息 另做處理 
 * 6) 
 *  第一種 用第三方 提供的 itemwrite( new File(path,filename) ); 直接寫到磁盤上 
 *  第二種 手動處理  
 * 
 */ 
public class FileUpLoad extends HttpServlet { 
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     
    requestsetCharacterEncoding("utf-8"); //設(shè)置編碼 
     
    //獲得磁盤文件條目工廠 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    //獲取文件需要上傳到的路徑 
    String path = requestgetRealPath("/upload"); 
     
    //如果沒以下兩行設(shè)置的話,上傳大的 文件 會占用 很多內(nèi)存, 
    //設(shè)置暫時存放的 存儲室 , 這個存儲室,可以和 最終存儲文件 的目錄不同 
    /** 
     * 原理 它是先存到 暫時存儲室,然后在真正寫到 對應目錄的硬盤上, 
     * 按理來說 當上傳一個文件時,其實是上傳了兩份,第一個是以 tem 格式的 
     * 然后再將其真正寫到 對應目錄的硬盤上 
     */ 
    factorysetRepository(new File(path)); 
    //設(shè)置 緩存的大小,當上傳文件的容量超過該緩存時,直接放到 暫時存儲室 
    factorysetSizeThreshold(1024*1024) ; 
     
    //高水平的API文件上傳處理 
    ServletFileUpload upload = new ServletFileUpload(factory); 
     
     
    try { 
      //可以上傳多個文件 
      List<FileItem> list = (List<FileItem>)uploadparseRequest(request); 
       
      for(FileItem item : list) 
      { 
        //獲取表單的屬性名字 
        String name = itemgetFieldName(); 
         
        //如果獲取的 表單信息是普通的 文本 信息 
        if(itemisFormField()) 
        {           
          //獲取用戶具體輸入的字符串 ,名字起得挺好,因為表單提交過來的是 字符串類型的 
          String value = itemgetString() ; 
           
          requestsetAttribute(name, value); 
        } 
        //對傳入的非 簡單的字符串進行處理 ,比如說二進制的 圖片,電影這些 
        else 
        { 
          /** 
           * 以下三步,主要獲取 上傳文件的名字 
           */ 
          //獲取路徑名 
          String value = itemgetName() ; 
          //索引到最后一個反斜杠 
          int start = valuelastIndexOf("\\"); 
          //截取 上傳文件的 字符串名字,加1是 去掉反斜杠, 
          String filename = valuesubstring(start+1); 
           
          requestsetAttribute(name, filename); 
           
          //真正寫到磁盤上 
          //它拋出的異常 用exception 捕捉 
           
          //itemwrite( new File(path,filename) );//第三方提供的 
           
          //手動寫的 
          OutputStream out = new FileOutputStream(new File(path,filename)); 
           
          InputStream in = itemgetInputStream() ; 
           
          int length = 0 ; 
          byte [] buf = new byte[1024] ; 
           
          Systemoutprintln("獲取上傳文件的總共的容量:"+itemgetSize()); 
 
          // inread(buf) 每次讀到的數(shù)據(jù)存放在  buf 數(shù)組中 
          while( (length = inread(buf) ) != -1) 
          { 
            //在  buf 數(shù)組中 取出數(shù)據(jù) 寫到 (輸出流)磁盤上 
            outwrite(buf, 0, length); 
             
          } 
           
          inclose(); 
          outclose(); 
        } 
      } 
       
       
       
    } catch (FileUploadException e) { 
      // TODO Auto-generated catch block 
      eprintStackTrace(); 
    } 
    catch (Exception e) { 
      // TODO Auto-generated catch block 
       
      //eprintStackTrace(); 
    } 
     
     
    requestgetRequestDispatcher("filedemojsp")forward(request, response); 
     
 
  } 
 
} 

System.out.println("獲取上傳文件的總共的容量:"+item.getSize()); 

3.filedemo.jsp

<%@ page language="java" import="javautil*" pageEncoding="UTF-8"%> 
<% 
String path = requestgetContextPath(); 
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 01 Transitional//EN"> 
<html> 
 <head> 
  <base href="<%=basePath%>"> 
   
  <title>My JSP 'filedemojsp' 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="stylescss"> 
  --> 
 
 </head> 
  
 <body> 
   
  用戶名:${requestScopeusename } <br/> 
  文件:${requestScopefile1 }<br/> 
  ${requestScopefile2 }<br/> 
  <!-- 把上傳的圖片顯示出來 --> 
  <img alt="go" src="upload/<%=(String)requestgetAttribute("file1")%> " /> 
   
   
   
 </body> 
</html> 

4結(jié)果頁面:

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

相關(guān)文章

  • Json格式詳解

    Json格式詳解

    JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。JSON采用完全獨立于語言的文本格式,這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成
    2021-11-11
  • js瀏覽器html5表單驗證

    js瀏覽器html5表單驗證

    這篇文章主要為大家詳細介紹了js瀏覽器html5表單驗證,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JS 獲取瀏覽器和屏幕寬高等信息的實現(xiàn)思路及代碼

    JS 獲取瀏覽器和屏幕寬高等信息的實現(xiàn)思路及代碼

    本節(jié)代碼主要使用了Document對象關(guān)于窗口的一些屬性,附實現(xiàn)代碼及源程序解決,有需求的朋友可以參考下
    2013-07-07
  • JavaScript中btoa和atob全局函數(shù)示例詳解

    JavaScript中btoa和atob全局函數(shù)示例詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript中btoa和atob全局函數(shù)的相關(guān)資料,atob和btoa是window對象的兩個函數(shù),用來編碼解碼Base64,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • ES5和ES6中類的區(qū)別總結(jié)

    ES5和ES6中類的區(qū)別總結(jié)

    這篇文章主要給大家介紹了ES5和ES6中類的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • JS中artdialog彈出框控件之提交表單思路詳解

    JS中artdialog彈出框控件之提交表單思路詳解

    artDialog是一個基于javascript編寫的對話框組件,它擁有精致的界面與友好的接口。本文給大家介紹JS中artdialog彈出框控件之提交表單思路詳解,對本文感興趣的朋友一起學習吧
    2016-04-04
  • JS組件Bootstrap dropdown組件擴展hover事件

    JS組件Bootstrap dropdown組件擴展hover事件

    bootstrap的下拉組件,需要點擊click時,方可展示下拉列表。因此對于喜歡簡單少操作的大家來說,點擊一下多少帶來不便,因此,引入hover監(jiān)聽,鼠標經(jīng)過自動展示下拉框。這篇文章主要介紹了JS組件Bootstrap dropdown組件擴展hover事件,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 微信小程序?qū)崿F(xiàn)留言功能

    微信小程序?qū)崿F(xiàn)留言功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)留言功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • uni-app自定義導航欄右側(cè)做增加按鈕并跳轉(zhuǎn)鏈接功能

    uni-app自定義導航欄右側(cè)做增加按鈕并跳轉(zhuǎn)鏈接功能

    這篇文章主要介紹了uni-app自定義導航欄右側(cè)做增加按鈕并跳轉(zhuǎn)鏈接,本文通過實例代碼給大家分享實現(xiàn)思路,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 僅30行代碼實現(xiàn)Javascript中的MVC

    僅30行代碼實現(xiàn)Javascript中的MVC

    這篇文章主要介紹了僅30行代碼實現(xiàn)Javascript中的MVC的方法,MVC的基礎(chǔ)是觀察者模式,這是實現(xiàn)model和view同步的關(guān)鍵,想要深入了解的朋友可以參考本文
    2016-02-02

最新評論

敦煌市| 扶绥县| 蓝田县| 临泽县| 灵川县| 天峻县| 兴国县| 梓潼县| 玉门市| 昭通市| 策勒县| 浪卡子县| 方山县| 鹿泉市| 新宾| 延川县| 泸水县| 呼玛县| 海盐县| 南靖县| 集贤县| 乳源| 邵东县| 龙井市| 买车| 武平县| 海兴县| 泰安市| 乐亭县| 玉环县| 盐亭县| 富平县| 孝昌县| 毕节市| 长汀县| 怀集县| 资阳市| 白河县| 前郭尔| 广河县| 桦甸市|