生活随笔
收集整理的這篇文章主要介紹了
sevlet实现下载文件功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
希望做一個小板塊,實現文件的上傳和下載,那么上傳實現了,就需要實現下載,閱讀了各位的博客總結了一下。在網頁中通過超鏈接是可以訪問我的資源的,瀏覽器不可訪問的資源他就會下載到本地,像一些瀏覽器可以直接訪問的如圖片,txt文件瀏覽器會直接打開。這就需要我們在sevlet中統一處理文件下載。
在sevlet中,首先要獲得jsp或html中的相應,文件名,通過文件名構建路徑得到資源,在設置response的一些參數(要下載的)。這樣之后使用io讀取文件,在讀入文件(不設置絕對路徑)時候就是自動保存在瀏覽器默認位置。要下載文件的路徑為:
sevlet核心代碼:
import java
.io
.FileInputStream
;
import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.io
.OutputStream
;
import java
.io
.PrintWriter
;import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;public class download extends HttpServlet {public void doGet(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{String filename
= request
.getParameter("filename");response
.setContentType("text/html");System
.out
.println(filename
);response
.setContentType(getServletContext().getMimeType(filename
)); response
.setHeader("Content-Disposition", "attachment;filename=" filename
);String fullFileName
= getServletContext().getRealPath("/image/" filename
); InputStream in
= new FileInputStream(fullFileName
); OutputStream out
= response
.getOutputStream(); int b
=0;while((b
=in
.read())!=-1){out
.write(b
);}in
.close();out
.close();}public void doPost(HttpServletRequest request
, HttpServletResponse response
) throws ServletException
, IOException
{this.doGet(request
, response
);}
}
點擊去訪問
文件下載成功,放置在默認下載路徑。
至于大文件可以加緩存下載優化,其他優化的不太清楚。知道的話可以一起討論。
總結
以上是生活随笔為你收集整理的sevlet实现下载文件功能的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。