天天看點

.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳

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

.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳
.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳

單檔案上傳案例分析

代碼展示:

/**
           

測試jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
           

結果展示:

在e盤下建立upload檔案目錄,作為檔案上傳的目錄

通路資源http://localhost:8080/JavaWeb_Filter/upload/upload1.jsp,測試檔案上傳,可看到對應目錄下有上傳的檔案資訊

.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳
.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳

多檔案上傳案例分析(針對檔案上傳常見問題)

單檔案上傳案例中還存在許多不足之處,例如檔案同名上傳問題、檔案中文亂碼問題、檔案儲存路徑優化問題均需要加以完善,下述針對這些問題,進一步提出解決方案優化檔案上傳

代碼展示:

/**
           

測試jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
           

結果展示:

保證e盤下有upload檔案目錄用于存放上傳的資料資訊

通路資源http://localhost:8080/JavaWeb_Filter/upload/upload2.jsp,上傳相應的内容,在指定目錄可以看到相應相應的檔案按照指定的規則完成上傳

.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳
.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳

檔案下載下傳

代碼展示:

/**
           

download.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
           

DownLoadServlet.java:

/**
           

結果展示:

通路資源http://localhost:8080/JavaWeb_Filter/ListFileServlet,顯示下載下傳的檔案,點選下載下傳測試資料

.net fileupload批量上傳可删除_[WEB篇]-JavaWeb基礎與應用-08-檔案的上傳和下載下傳

如果在下載下傳過程中,源檔案丢失導緻下載下傳失敗,則顯示相應的提示資訊即可

繼續閱讀