2015年9月26日 星期六

[JSP]圖片或檔案上傳進資料庫的方法

要做出上傳圖片的form表單,首先必須要在表單的標籤上增加一個enctype
如下圖



表單的enctype分為三種
  1. application/x-www-form-urlencoded
  2. multipart/form-data
  3. text/plain
預設是第一種編碼
第二種編碼在需要上傳檔案時使用
第三種是不對特殊字元進行邊碼

詳情的說明可以去查form的enctype屬性

再來要接收multipart/form-data時,servlet需要定義xml或用annotation定義
主要的屬性有:
  1. location: 上傳之表單資料與檔案暫時存放在Server端之路徑。
  2. fileSizeThreshold: 檔案的大小臨界值,超過的話檔案會被寫入上傳文件裡
  3. maxFileSize: 上傳單一檔案之長度限制
  4. maxRequestSize: 上傳所有檔案之總長度限制

3跟4的屬性預設是-1,表示不設限制

我習慣是用annotation定義,如下圖


最後你可以用
Part part = request.getPart("image");
或是
Collection<Part> parts = request.getParts(); 
來獲得part物件處理上傳的檔案資料

part物件可以使用getSize()與getInputStream()這些方法將圖片寫入資料庫
或是使用write()將資料寫入資料庫

詳細的方法文件請詳見java文件的java.servlet.http.part這隻class


以下是我將多張圖片寫入資料庫的程式片段

最後將list傳進dao裡呼叫資料庫就能進行多張圖片的存取

沒有留言:

張貼留言