国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用JavaBean實現文件上載(5)

2019-11-18 13:37:42
字體:
來源:轉載
供稿:網友

  用javaBean實現文件上載(5)

用JavaBean實現文件上載-方法

   前面四個public類型的方法用于返回FileUploadBean對象的私有域,它們是:getFilepath,getFilename,getContentType以及getFieldValue。

public String getFilepath()

返回filepath私有域的值。

public String getFilename()

返回filename私有域的值。

public String getContentType()

返回contentType私有域的值。

public String getFieldValue(String fieldName)

返回Html表單中指定輸入元素的值,元素的名字通過fieldName參數指定。

public void setSavePath(String savePath)

用該方法指定服務器上保存上載文件的目錄的名字。

public void doUpload(HttpServletRequest request) throws IOException

doUpload是FileUploadBean類中最重要的一個方法。它的任務有二個:第一,它從HTML表單提取出輸入域的名字和值并保存到Dictionary對象;第二,doUpload方法提取出上載的文件,把這個文件保存到savePath指定的路徑,并分別把文件的名字、路徑、內容類型賦給filename、filepath和contentType域。

PRivate void setContentType(String s)

由doUpload方法調用。setContentType方法從原始字節數據提取出上載文件的內容類型。

private void setFilename(String s)

由doUpload方法調用。setFilename方法從原始字節數據提取出文件路徑和名字。

   doUpload方法的參數是Servlet/jsp容器創建的HttpServletRequest對象。HttpServletRequest對象描述了程序為了提取出HTML表單元素名字-值對以及上載文件必須處理的HTTP請求。doUpload方法首先通過HttpServletRequest對象的getInputStream方法獲得ServletInputStream對象。

   如前所述,每一個表單元素由分界符和一組回車換行符分隔。因此,我們可以一行一行地讀入HttpServletRequest對象的內容。下面這行代碼定義了一個名為line的byte數組:
   然后,我們用ServletInputStream對象的readLine方法讀入HttpServletRequest對象內容的第一行:

int i = in.readLine(line, 0, 128);

   第一行應該是分界符,而且假如沒有錯誤的話,它的長度應該大于3。假如它的長度小于3,我們可以認為出現了錯誤,doUpload方法應該立即返回:

if (i < 3)
return;

   分界符和分界符的長度都非常重要,從本文后面你可以看到這一點。分界符由一組回車換行符結束,因此它的實際長度要比readLine方法返回的字節數少2。

int boundaryLength = i - 2;

   丟棄byte數組line的最后2個回車換行符即可獲得分界符:

String boundary = new String(line, 0, boundaryLength);

   接下來,fields域被實例化成Hashtable對象。這個Hashtable對象將用來保存HTML表單元素的名字/值對。

fields = new Hashtable();

   由于已經有了分界符,接下來我們就可以開始提取出表單元素的值。具體方法是用一個while循環按行讀入HttpServletRequest對象的內容,直至碰到內容結束readLine方法返回-1為止。所有的表單元素都以分界符開始,后面跟上“Content-Disposition”行,這一行由下面這些字符開始:

Content-Disposition: form-data; name=

   表單元素有兩種類型:文件,非文件(普通的表單元素,如TEXT或者HIDDEN元素)。這兩種表單元素的區別在于文件元素包含字符串“filename="filename"”。由此,我們可以利用該信息把文件和非文件的表單輸入元素區別開來,代碼如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 化州市| 秀山| 岚皋县| 河南省| 沐川县| 赣榆县| 合川市| 隆林| 千阳县| 绩溪县| 邵东县| 东乡族自治县| 固镇县| 郯城县| 闽清县| 南郑县| 延津县| 德钦县| 定襄县| 东阿县| 绵竹市| 岗巴县| 化德县| 盱眙县| 庆安县| 灵璧县| 平湖市| 鹤山市| 金阳县| 武隆县| 哈巴河县| 嵩明县| 隆德县| 徐闻县| 诏安县| 弥勒县| 玉溪市| 商丘市| 玉溪市| 定陶县| 阜城县|