­

Servlet下載伺服器上的文件Demo

  • 2019 年 10 月 7 日
  • 筆記

下載文件

1.直接使用a標籤來去下載

有些內容會瀏覽器自動解析

瀏覽器不能解析的文件才會被下載

2.通過發送Servlet請求來去下載

通過發送一個Servlet請求,把文件名發送給伺服器

發送給伺服器後,接收到文件名參數,獲取文件的絕對地址

通過流的形式來去寫到瀏覽器

還得要告訴文件是什麼類型

瀏覽器是以MIME的類型來識別類型

this.getServletContext().getMimeType(「文件名稱」)

設置響應的類型

res.setContentType("MIME類型")

設置響應頭,告訴瀏覽器不要去解析,是以附件的形式打開

res.setHeader("Content-Dsiposition","attachment;filename="+文件名)

解決中文名稱亂碼問題

獲取中文參數報錯問題

高版本tomcat中的新特性:就是嚴格按照 RFC 3986規範進行訪問解析,而 RFC 3986規範定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元(RFC3986中指定了以下字元為保留字元:! * 』 ( ) ; : @ & = + $ , / ? # [ ])

解決方案

…/conf/catalina.properties中,找到最後注釋掉的一行 #tomcat.util.http.parser.HttpParser.requestTargetAllow=|  ,改成tomcat.util.http.parser.HttpParser.requestTargetAllow=|{},表示把{}放行

老九學堂會員社群出品

作者:柳成萌

老九學堂會員社群出品

作者:柳成萌