JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Http 檔案下載的補述(幾點實作的經驗) [精華]
精靈





發文: 86
積分: 7
於 2004-04-17 01:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在論壇裡,已經有先進說明過如何在 Servlet / JSP 中,利用 HTTP Protocol 實作動態的檔案下載服務。這一項功能個人在系統開發中,用的很多,也遇到過幾個問題,想將這些經驗分享給大家,希望對大家能有幫助。

1. MS IE 版本的問題
1
2
3
4
5
6
7
8
9
10
 if (request.getHeader("User-Agent").indexOf("MSIE 5.5") != -1) {
    // MS IE5.5 有要作特別處理
    response.setHeader("Content-Disposition","filename="
            + new String( f_name.getBytes("Big5"), "ISO8859_1" ) );
  }
  else {
    // 非 IE5.5 的 Header 設定方式
    response.addHeader( "Content-Disposition", "attachment;filename="
          + new String( f_name.getBytes("Big5"), "ISO8859_1" ) );
  }

IE 5.5 不能加上 attachment 這個關鍵字,這是很奇怪的一個版本。

2. 下載中文檔名,如前程式區塊中的語法,其實很簡單就可以作到,只要將檔名改成 "ISO8859_1" 的編碼就可以,我測過 Tomcat , Oracle 9ias, Sun One 都可以正常的下載中文檔名,而且,這樣寫法,好處是無需外加任何的 package。

3. 檔案下載完畢之後,最好加上以下這二行指令:
1
2
  response.setStatus( response.SC_OK );
  response.flushBuffer();

以前沒有加這二行,常常可以在 error.log 裡看到 "Connection rest by peer " 這樣的錯誤訊息,而且,更嚴重的是執行下載的 servlet / jsp 不會結束,要等相當長的時間才會 Timeout,如果下載的次數一多,AP Server 就慘了,所以,有作動態下載檔案的程式,最好還是加上這二行指令。

4. 安全性考量,有時候寫程式偷懶,會採用 dumpfile.jsp?f_name=attach/a.txt 這樣的方式來處理檔案下載。如果,在程式中沒有過濾掉上傳檔案名稱參數中,不可夾雜 ".." 的話,試想,如果有人故意將參數改成這樣呢 ? dumpfile.jsp?f_name=../../../a.txt,嘿嘿嘿,整個系統的所有檔案就任人下載啦。

以上,都是個人曾經犯過的錯誤,給大家參考。


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
30439 [精華] Http 檔案下載的補述(幾點實作的經驗) 精靈 1202 2004-04-17 01:30
28817 Re:Http 檔案下載的補述(幾點實作的經驗) 精靈 334 2004-04-17 01:47
22798 Re:Http 檔案下載的補述(幾點實作的經驗) karry 143 2005-07-08 13:41
27763 Re:Http 檔案下載的補述(幾點實作的經驗) lianan 526 2004-04-28 11:12
26537 Re:Http 檔案下載的補述(幾點實作的經驗) AdaHsu 491 2004-04-29 17:26
26519 Re:Http 檔案下載的補述(幾點實作的經驗) 精靈 126 2004-04-29 10:44
24718 Re:Http 檔案下載的補述(幾點實作的經驗) leonwang 24 2004-11-30 17:17
23482 Re:Http 檔案下載的補述(幾點實作的經驗) themaster390 40 2005-04-22 16:31
23561 Re:Http 檔案下載的補述(幾點實作的經驗) Jill_Yeh 234 2005-04-24 23:47
21040 Re:Http 檔案下載的補述(幾點實作的經驗) ntsky 76 2006-01-11 17:16
11323 Re:Http 檔案下載的補述(幾點實作的經驗) tealeaves 131 2009-05-18 17:34
9063 Re:Http 檔案下載的補述(幾點實作的經驗) Kirpheaice 162 2011-04-21 17:27
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8