JavaWeb基礎與應用
8.檔案的上傳和下載下傳
檔案上傳
- 實作web開發中的檔案上傳功能,需完成如下二步操作:
- 在web頁面中添加上傳輸入項
- 在servlet中讀取上傳檔案的資料,并儲存到本地硬碟中。
- 如何在web頁面中添加上傳輸入項?
- <input type=“file”>标簽用于在web頁面中添加檔案上傳輸入項,設定檔案上傳輸入項時須注意:
- 1、必須要設定input輸入項的name屬性,否則浏覽器将不會發送上傳檔案的資料。
- 2、必須把form的enctype屬值設為 multipart/form-data. 設定該值後,浏覽器在上傳檔案時,将把檔案資料附帶在http請求消息體中,并使用MIME協定對上傳的檔案進行描述,以友善接收方對上傳資料進行解析和處理。
- 如何在Servlet中讀取檔案上傳資料,并儲存到本地硬碟中?
- Request對象提供了一個getInputStream方法,通過這個方法可以讀取到用戶端送出過來的資料。但由于使用者可能會同時上傳多個檔案,在servlet端程式設計直接讀取上傳資料,并分别解析出相應的檔案資料是一項非常麻煩的工作,示例。
- 為友善使用者處理檔案上傳資料,Apache 開源組織提供了一個用來處理表單檔案上傳的一個開源元件( Commons-fileupload ),該元件性能優異,并且其API使用極其簡單,可以讓開發人員輕松實作web檔案上傳功能,是以在web開發中實作檔案上傳功能,通常使用Commons-fileupload元件實作。
- 使用Commons-fileupload元件實作檔案上傳,需要導入該元件相應的支撐jar包:Commons-fileupload和commons-io。commons-io 不屬于檔案上傳元件的開發jar檔案,但Commons-fileupload 元件從1.1 版本開始,它工作時需要commons-io包的支援。
檔案上傳需要導入相關jar包:commons-fileupload-1.3.3.jar、commons-io-2.6.jar
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNzYmMhVGMhlzY2QTZ2QmZzQ2M1QzYyMDMwU2NhFGM08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
單檔案上傳案例分析
代碼展示:
/**
測試jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
結果展示:
在e盤下建立upload檔案目錄,作為檔案上傳的目錄
通路資源http://localhost:8080/JavaWeb_Filter/upload/upload1.jsp,測試檔案上傳,可看到對應目錄下有上傳的檔案資訊
多檔案上傳案例分析(針對檔案上傳常見問題)
單檔案上傳案例中還存在許多不足之處,例如檔案同名上傳問題、檔案中文亂碼問題、檔案儲存路徑優化問題均需要加以完善,下述針對這些問題,進一步提出解決方案優化檔案上傳
代碼展示:
/**
測試jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
結果展示:
保證e盤下有upload檔案目錄用于存放上傳的資料資訊
通路資源http://localhost:8080/JavaWeb_Filter/upload/upload2.jsp,上傳相應的内容,在指定目錄可以看到相應相應的檔案按照指定的規則完成上傳
檔案下載下傳
代碼展示:
/**
download.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
DownLoadServlet.java:
/**
結果展示:
通路資源http://localhost:8080/JavaWeb_Filter/ListFileServlet,顯示下載下傳的檔案,點選下載下傳測試資料
如果在下載下傳過程中,源檔案丢失導緻下載下傳失敗,則顯示相應的提示資訊即可