




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京傳智播客教育文件的上傳和下載北京傳智播客教育Tip:文件上傳概述實(shí)現(xiàn)web開發(fā)中的文件上傳功能,需完成如下二步操作:在web頁(yè)面中添加上傳輸入項(xiàng)在servlet中讀取上傳文件的數(shù)據(jù),并保存到服務(wù)器硬盤中。如何在web頁(yè)面中添加上傳輸入項(xiàng)?<inputtype=“file”>標(biāo)簽用于在web頁(yè)面中添加文件上傳輸入項(xiàng),設(shè)置文件上傳輸入項(xiàng)時(shí)須注意:1、必須要設(shè)置input輸入項(xiàng)的name屬性,否則瀏覽器將不會(huì)發(fā)送上傳文件的數(shù)據(jù)。2、必須把form的enctype屬值設(shè)為multipart/form-data.設(shè)置該值后,瀏覽器在上傳文件時(shí),將把文件數(shù)據(jù)附帶在http請(qǐng)求消息體中,并使用MIME協(xié)議對(duì)上傳的文件進(jìn)行描述,以方便接收方對(duì)上傳數(shù)據(jù)進(jìn)行解析和處理。3、表單的提交方式要是post北京傳智播客教育Tip:文件上傳概述如何在Servlet中讀取文件上傳數(shù)據(jù),并保存到本地硬盤中?Request對(duì)象提供了一個(gè)getInputStream方法,通過(guò)這個(gè)方法可以讀取到客戶端提交過(guò)來(lái)的數(shù)據(jù)。但由于用戶可能會(huì)同時(shí)上傳多個(gè)文件,在servlet端編程直接讀取上傳數(shù)據(jù),并分別解析出相應(yīng)的文件數(shù)據(jù)是一項(xiàng)非常麻煩的工作,示例。為方便用戶處理文件上傳數(shù)據(jù),Apache開源組織提供了一個(gè)用來(lái)處理表單文件上傳的一個(gè)開源組件(Commons-fileupload),該組件性能優(yōu)異,并且其API使用極其簡(jiǎn)單,可以讓開發(fā)人員輕松實(shí)現(xiàn)web文件上傳功能,因此在web開發(fā)中實(shí)現(xiàn)文件上傳功能,通常使用Commons-fileupload組件實(shí)現(xiàn)。使用Commons-fileupload組件實(shí)現(xiàn)文件上傳,需要導(dǎo)入該組件相應(yīng)的支撐jar包:Commons-fileupload和mons-io不屬于文件上傳組件的開發(fā)jar文件,但Commons-fileupload組件從1.1版本開始,它工作時(shí)需要commons-io包的支持。北京傳智播客教育Tip:fileupload組件工作流程IE瀏覽器上傳文件1上傳文件2普通字段WEB服務(wù)器requestServletFileupLoadDiskFileItemFactory代表普通字段的FileItem代表上傳文件1FileItem代表上傳文件2FileItemisFormFieldgetFieldNamegetStringgetInputStreamgetNamegetInputStreamgetName北京傳智播客教育Tip:文件上傳案例實(shí)現(xiàn)步驟1、創(chuàng)建DiskFileItemFactory對(duì)象,設(shè)置緩沖區(qū)大小和臨時(shí)文件目錄2、使用DiskFileItemFactory對(duì)象創(chuàng)建ServletFileUpload對(duì)象,并設(shè)置上傳文件的大小限制。3、調(diào)用ServletFileUpload.parseRequest方法解析request對(duì)象,得到一個(gè)保存了所有上傳內(nèi)容的List對(duì)象。4、對(duì)list進(jìn)行迭代,每迭代一個(gè)FileItem對(duì)象,調(diào)用其isFormField方法判斷是否是上傳文件True為普通表單字段,則調(diào)用getFieldName、getString方法得到字段名和字段值False為上傳文件,則調(diào)用getInputStream方法得到數(shù)據(jù)輸入流,從而讀取上傳數(shù)據(jù)。編碼實(shí)現(xiàn)文件上傳北京傳智播客教育Tip:核心API—DiskFileItemFactoryDiskFileItemFactory是創(chuàng)建FileItem對(duì)象的工廠,這個(gè)工廠類常用方法:publicDiskFileItemFactory(int
sizeThreshold,java.io.File
repository)構(gòu)造函數(shù)publicvoidsetSizeThreshold(int
sizeThreshold)設(shè)置內(nèi)存緩沖區(qū)的大小,默認(rèn)值為10K。當(dāng)上傳文件大于緩沖區(qū)大小時(shí),fileupload組件將使用臨時(shí)文件緩存上傳文件。publicvoidsetRepository(java.io.File
repository)指定臨時(shí)文件目錄,默認(rèn)值為System.getProperty("java.io.tmpdir").北京傳智播客教育Tip:核心API—ServletFileUploadServletFileUpload負(fù)責(zé)處理上傳的文件數(shù)據(jù),并將表單中每個(gè)輸入項(xiàng)封裝成一個(gè)FileItem對(duì)象中。常用方法有:booleanisMultipartContent(HttpServletRequest
request)判斷上傳表單是否為multipart/form-data類型ListparseRequest(HttpServletRequest
request)解析request對(duì)象,并把表單中的每一個(gè)輸入項(xiàng)包裝成一個(gè)fileItem對(duì)象,并返回一個(gè)保存了所有FileItem的list集合。setFileSizeMax(long
fileSizeMax)設(shè)置單個(gè)上傳文件的最大值setSizeMax(long
sizeMax)設(shè)置上傳文件總量的最大值setHeaderEncoding(java.lang.String
encoding)設(shè)置編碼格式,解決上傳文件名亂碼問(wèn)題北京傳智播客教育Tip:核心API—FileItemFileItem用來(lái)表示文件上傳表單中的一個(gè)上傳文件對(duì)象或者普通表單對(duì)象booleanisFormField()
判斷FileItem是一個(gè)文件上傳對(duì)象還是普通表單對(duì)象如果判斷是一個(gè)普通表單對(duì)象StringgetFieldName()獲得普通表單對(duì)象的name屬性StringgetString(Stringencoding)獲得普通表單對(duì)象的value屬性,可以用encoding進(jìn)行編碼設(shè)置如果判斷是一個(gè)文件上傳對(duì)象StringgetName()獲得上傳文件的文件名(有些瀏覽器會(huì)攜帶客戶端路徑)InputStreamgetInputStream()獲得上傳文件的輸入流delete()在關(guān)閉FileItem輸入流后,刪除臨時(shí)文件北京傳智播客教育Tip:多個(gè)文件上傳的javascript編碼技巧:每次動(dòng)態(tài)增加一個(gè)文件上傳輸入框,都把它和刪除按紐放置在一個(gè)單獨(dú)的div中,并對(duì)刪除按紐的onclick事件進(jìn)行響應(yīng),使之刪除刪除按紐所在的div。如:this.parentNode.parentNode.removeChild(this.parentNode);北京傳智播客教育Tip:上傳文件的存放問(wèn)題文件存放位置為保證服務(wù)器安全,上傳文件應(yīng)保存在應(yīng)用程序的WEB-INF目錄下,或者不受WEB服務(wù)器管理的目錄。為防止多用戶上傳相同文件名的文件,而導(dǎo)致文件覆蓋的情況發(fā)生,文件上傳程序應(yīng)保證上傳文件具有唯一文件名。為防止單個(gè)目錄下文件過(guò)多,影響文件讀寫速度,處理上傳文件的程序應(yīng)根據(jù)可能的文件上傳總量,選擇合適的目錄結(jié)構(gòu)生成算法,將上傳文件分散存儲(chǔ)。北京傳智播客教育Tip:文件下載Web應(yīng)用中實(shí)現(xiàn)文件下載的兩種方式方式一超鏈接直接指向下載資源方式二程序?qū)崿F(xiàn)下載需設(shè)置兩個(gè)響應(yīng)頭:設(shè)置Content-Type的值為:下載文件對(duì)應(yīng)MIME類型、Web服務(wù)器希望瀏覽器不直接處理相應(yīng)的實(shí)體內(nèi)容,而是由用戶選擇將相應(yīng)的實(shí)體內(nèi)容保存到一個(gè)文件中,這需要設(shè)置Content-Disposition報(bào)頭。在設(shè)置Content-Dispostion之前一定要指定Content-Type. 北京傳智播客教育Tip:下載案例遍歷指定目錄下的所有文件顯示給用戶,并允許用戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45227-2025化工園區(qū)封閉管理系統(tǒng)技術(shù)要求
- GB/T 45126-2025鋼渣碳酸化固定二氧化碳含量的測(cè)定方法
- 出攤貨架轉(zhuǎn)讓合同范本
- 農(nóng)村田地征用合同范本
- 臨時(shí)股合同范本
- 代課老師合同范本
- 冰箱采購(gòu)談判合同范本
- 半永久加盟合同范本
- 健身器合同范本
- 養(yǎng)殖鴿子合作合同范本
- 超市店長(zhǎng)考核方案(實(shí)例)
- 德力西質(zhì)量獎(jiǎng)自評(píng)報(bào)告組織概述
- 任務(wù)八-汽車四輪定位的檢測(cè)分析課件
- 自相矛盾課件(省一等獎(jiǎng))
- 小學(xué)數(shù)學(xué)思想方法(課件)
- 小學(xué)語(yǔ)文人教五年級(jí)下冊(cè)最閃亮的星課件
- 傷寒論講義陽(yáng)明病篇講解
- 菲斯特轉(zhuǎn)子秤的課件1
- 家譜吊線圖模板
- 天車維護(hù)與安全操作培訓(xùn)課件
- 焊工安全技術(shù)操作規(guī)程
評(píng)論
0/150
提交評(píng)論