17.檔案上傳、下載

來源:互聯網
上載者:User

標籤:epo   提交   臨時檔案   工廠   path   etc   儲存目錄   伺服器安全   web   


/*檔案上傳*/(common-fileupload)(common-fileupload是依賴於common-io這個包的)
  使用Apache檔案上傳組件處理檔案上傳 /*步驟*/:
    1.建立一個DiskFileFactory factory = new DiskFileFactory();
    2.建立一個檔案上傳解析器

1 DiskFileItemFactory factory = new DiskFileItemFactory();2 //方法用於設定當上傳檔案尺寸大於setSizeThreshold方法設定的臨界值時,將檔案以臨時檔案形式儲存在磁碟上的存放目錄。3 //有一個對應的獲得臨時檔案夾的 File getRespository() 方法。4 factory.setRepository(new File(this.getServletContext().getRealPath("/WEB-INF/temp")));5 6 ServletFileUpload upload = new ServletFileUpload(factory);


    3.判斷提交上來的資料是否是上傳表單的資料

1 if(!upload.isMultipartContent(request)){2     //按照傳統方式擷取資料3     return;4 }

    4.使用ServletFileUpload 解析器解析上傳資料,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項

1 List<FileItem> list = upload.parseRequest(request);2 for(FileItem item : list){3     if(item.isFormField()){


    

檔案上傳功能有許多需要注意的 /*小細節*/問題,以下列出的幾點需要特別注意的

  0.form表單中 加上 enctype="multipart/form-data",聲明上傳位元據

  1.為保證伺服器安全,上傳檔案應該放在外界無法直接存取的目錄表,比如放於WEB-INF目錄下

  2.為防止檔案覆蓋的現象發生,要為上傳檔案產生一個唯一的檔案名稱

  3.為防止一個目錄下面出現太多檔案,要使用hash演算法打散儲存

  4.要限制上傳檔案的最大值

  5.要先回上傳檔案的類型,在收到上傳檔案名稱時,判斷尾碼名是否合法

  6.想確保臨時檔案(當上傳檔案大小超過工廠設定的緩衝區大小時(不設定預設10KB))刪除,一定要在處理完上傳檔案後,調用item.delete方法

  7.監聽檔案上傳進度

  8.在web頁面中動態添加檔案上傳輸入項



/*檔案下載*/

1.在JSP頁面提供下載的檔案資源

2.實現檔案下載

/*如何找到雜湊打散後的對應檔案*/

/*雜湊打散後,檔案名稱不會發生變化 依舊是UUID + 檔案名稱 在處理下載的Servlet中,

同樣用Hash打散的方法,通過要下載的唯一檔案名(UUID+檔案名稱),和儲存要下載檔案的根目錄,得到要下載的檔案的儲存目錄*/

 

17.檔案上傳、下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.