對(duì)于一些普通的文件下載,想必大家都會(huì)去點(diǎn)擊默認(rèn)的鏈接進(jìn)行資料獲取。效率慢是一個(gè)方面,有時(shí)候下載的過(guò)程并不順序。在學(xué)習(xí)了python中的一些程序后,我們可以選擇使用Servlet進(jìn)行文件的下載。下面我們先就Servlet進(jìn)行簡(jiǎn)單的說(shuō)明,然后帶來(lái)有關(guān)的下載文件代碼實(shí)例。
1、說(shuō)明
Servlet是Sun公司開(kāi)發(fā)的用于交互式地瀏覽和生成數(shù)據(jù),生成動(dòng)態(tài)Web的技術(shù)。狹義的Servlet是指Java語(yǔ)言實(shí)現(xiàn)的一個(gè)接口。但一般情況下,我們把實(shí)現(xiàn)了Servlet接口的Java程序叫做Servlet
2、使用servlet程序下載
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//得到需要下載的文件 String path = this .getServletContext().getRealPath( "/upload/9/1/圖片1.png" ); File file = new File(path); //讀取服務(wù)器本地的文件 FileInputStream in = new FileInputStream(file); /** * 處理URL編碼問(wèn)題 */ String fileName = file.getName(); //對(duì)文件名進(jìn)行URl編碼 fileName = URLEncoder.encode(fileName, "utf-8" ); //判斷不同瀏覽器 String userAgent = request.getHeader( "user-agent" ); String filefix = null ; if (userAgent.contains( "Trident" )){ //IE filefix = "filename=" +fileName; } else if (userAgent.contains( "Firefox" )){ //Firefox filefix = "filename*=" +fileName; } else { filefix = "filename=" +fileName; } //告訴瀏覽器以下載方式打開(kāi)資源 response.setHeader( "Content-Disposition" , "attachment;" +filefix); //把本地文件發(fā)送給瀏覽器 byte [] buf = new byte [ 1024 ]; int len = 0 ; while ( (len=in.read(buf))!=- 1 ){ response.getOutputStream().write(buf, 0 , len); } //關(guān)閉 in.close(); |
到此這篇關(guān)于java中Servlet程序下載文件實(shí)例詳解的文章就介紹到這了,更多相關(guān)java中Servlet程序下載文件內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.py.cn/java/download/24522.html