久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

利用Jakarta commons fileupload組件實(shí)現(xiàn)多文件上傳

 昵稱2807 2007-09-26

利用Jakarta commons fileupload組件實(shí)現(xiàn)多文件上傳

         曾經(jīng)寫過一篇 文章《利用MultipartFile實(shí)現(xiàn)文件上傳》,,可是最近在工作中,,我需要同時(shí)上傳多個(gè)文件,似乎用MultipartFile就不能勝任了,,于是想到了Jakarta commons,。Jakarta commons真是不錯(cuò)的,有那么多開源且好用的東東,,太方便了,。好了,閑話少說,,開始介紹一下jakarta commons fileupload組件吧,。
        首先,需要到其官網(wǎng)上下載最新的jar包及其依賴的jar包,,然后可以參考一下它的user guide,,很簡單,想信大家都能看懂,,這里就把主要的內(nèi)容提一下(相當(dāng)于一個(gè)刪減的翻譯),。
一.基本原理
        FileUpload組件將頁面提交的所有元素(普通form表單域,如text和文件域file)都看作一樣的FileItem,,這樣上傳頁面提交的request請(qǐng)求也就是一個(gè)FileItem的有序組合,,F(xiàn)ileUpload組件可以解析該request,并返回一個(gè)一個(gè)的FileItem,。而對(duì)每一個(gè)FileItem,,F(xiàn)ileUpload組件可以判斷出它是普通form表單域還是文件file域,從而根據(jù)不同的類型,,采取不同的操作--如果是表單域,,就讀出其值,如果是文件域,,就保存文件到服務(wù)器硬盤上或者內(nèi)存中,。
二.具體實(shí)現(xiàn)
         對(duì)一個(gè)HttpRequest請(qǐng)求,我們要判斷該請(qǐng)求是否是文件上傳的請(qǐng)求
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        不過,,個(gè)人覺得這個(gè)方法一般不需要,,我們一般是在需要上傳時(shí)才采用fileupload組件處理request請(qǐng)求的。
         如果確實(shí)是文件上傳的請(qǐng)求,,我們?nèi)绾谓馕鲈搑equest呢,?
         至此我們已經(jīng)的到了FileItem的list,對(duì)每個(gè)Item的處理要考慮是標(biāo)準(zhǔn)的form表單域還是上傳文件file域,然后做不同的處理,,可以通過以下方式實(shí)現(xiàn):
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item 
= (FileItem) iter.next();

    
if (item.isFormField()) {
        processFormField(item);
    }
 else {
        processUploadedFile(item);
    }

}
       對(duì)于一個(gè)簡單的form表單域,,我們可以通過以下方法得到該域的相關(guān)信息:
// Process a regular form field
if (item.isFormField()) {
    String name 
= item.getFieldName();
    String value 
= item.getString();
    ...
}
       而對(duì)于一個(gè)upload file,我們則可以通過如下方式得到其相關(guān)信息:
// Process a file upload
if (!item.isFormField()) {
    String fieldName 
= item.getFieldName();
    String fileName 
= item.getName();
    String contentType 
= item.getContentType();
    
boolean isInMemory = item.isInMemory();
    
long sizeInBytes = item.getSize();
    ...
}
        實(shí)際上,,對(duì)于一個(gè)上傳的文件,,我們一般不會(huì)把它包存在內(nèi)存中,除非它足夠小,。我們一般是把它保存到硬盤上,,使用以下方法就可以將上傳的文件保存到服務(wù)器硬盤上了:
File uploadedFile = new File(...);
item.write(uploadedFile);
         好了,到了這里,,fileupload組件的基本api已經(jīng)介紹完了,,大家應(yīng)該有點(diǎn)輪廓了吧?
        在下一篇文章中,,我會(huì)對(duì)commons FileUpload組件稍作包裝,,并做個(gè)簡單的demo

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1625754

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多