1. 程式人生 > >Web網頁檔案下載

Web網頁檔案下載

 通過超連結提供下載的缺點:

在點選頁面上的超連結的時候,只有2.rar和4.ppt 連線會彈出下載提示。

而其他的連線都會直接在 瀏覽器中開啟需要下載的檔案。

由於1.jpg 、1.txt檔案是瀏覽器可以直接識別的並且能夠顯示的資料,這時瀏覽器直接把這些資料開啟顯示了 。而zip壓縮檔案瀏覽器並不支援直接在頁面上瀏覽,因此才會提示下載。

JAVA程式碼

JavaEE中只需要書寫Servlet程式,在Servlet程式中,通過IO流把需要使用者下載的檔案以流的方式放給客戶端,並且通過Response告訴客戶端這些資料不能直接開啟,需要下載。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>通過java程式碼對外提供下載</h1>
    <a href="/servlet/testStream?filename=1.jpg">1.jpg</a>
    <a href="/servlet/testStream?filename=2.rar">2.rar</a>
    <a href="/servlet/testStream?filename=3.txt">3.txt</a>
    <a href="/servlet/testStream?filename=4.ppt">4.ppt</a>

    <br/>
    <h1>通過超連結對外提供下載</h1>
    <a href="/servlet/resource/1.jpg">1.jpg</a>
    <a href="/servlet/resource/2.rar">2.rar</a>
    <a href="/servlet/resource/3.txt">3.txt</a>
    <a href="/servlet/resource/4.ppt">4.ppt</a>
</body>
</html>
public class TestStream extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //獲取檔名
        String filename = request.getParameter("filename");
        //兩頭 告訴瀏覽器檔案的型別
        response.setContentType(this.getServletContext().getMimeType(filename));
        //告訴瀏覽器檔名 獲取瀏覽器型別
        String agent = request.getHeader("User-Agent");
        String encodeFilename="";
        if(agent.contains("MSIE")){
            //IE
            encodeFilename= URLEncoder.encode(filename,"utf-8");
            encodeFilename=filename.replace("+"," ");
        }else if(agent.contains("Firefox")){
            //火狐
            BASE64Encoder base64Encoder=new BASE64Encoder();
            encodeFilename="=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8"))+"?=";
        }else{
            //其他
            encodeFilename= URLEncoder.encode(filename,"utf-8");
        }

        response.setHeader("content-disposition","attachment;filename="+encodeFilename);

        //兩流
        FileInputStream in = new FileInputStream(this.getServletContext().getRealPath("/resource/" + filename));
        OutputStream os = response.getOutputStream();
        int b;
        while((b=in.read())!=-1){
            os.write(b);
        }
        in.close();

    }
}

相關推薦

Web網頁檔案下載

 通過超連結提供下載的缺點: 在點選頁面上的超連結的時候,只有2.rar和4.ppt 連線會彈出下載提示。 而其他的連線都會直接在 瀏覽器中開啟需要下載的檔案。 由於1.jpg 、1.txt檔案是瀏覽器可以直接識別的並且能夠顯示的資料,這時瀏覽器直接把這些資料開

java web實現檔案下載

javaweb實現檔案下載 實現檔案下載 解決下載檔名帶有中文亂碼問題 效果圖 實現思路 根據請求連接獲取檔名和檔案型別,設定響應頭,獲取輸入流和輸出流 核心程式碼 public void doGet(HttpServletR

Java web 關於檔案下載的一點理解

今天在,解決一個關於匯出SQL資料,生成excle檔案中 參考了這篇文章:跳轉 1.Content-Disposition response.setHeader("Content-Disposition", "attachment;fileName=

web專案-檔案下載檔案伺服器-應用伺服器-客戶端)

檔案的下載一直都是web專案中的常用功能,但是在我們公司專案中,專案上線後單下載功能方面都可以簡單易懂的說分為三個部分,即檔案伺服器、應用伺服器和客戶端,而我們在上傳的時候都是將上傳儲存到檔案伺服器(也可以俗稱網路伺服器),而在資料庫中儲存的只是檔案在檔案伺服器上的地址,類

論前後臺如何實現web檔案下載功能

web中的許多功能不僅僅依靠後臺實現,前臺的功能也十分強大,操作使用便捷,今天就看到了一個令人心服口服的案例,所以趕緊記下。下次再遇見,至少可以節省五分鐘。 下載功能相信在很多的場景中都需要用到。

(我是新手)web網頁下載,在創建輸入流時拋出異常

第一個 () tex 文件絕對路徑 finally 暫時 pro stream exce 1 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletEx

如何找到微信中快取的檔案以及微信網頁下載的遊戲

第一級目錄為 : Tencent   第二級目錄為:MicroMsg (微信)  MobileQQ  (QQ)   第三級目錄為:BigFile (儲存大的檔案 如遊戲)   檔名是隨機加密的 我們可以從大小看出 

web安全(7)-- 檔案下載漏洞

1.1 漏洞描述     一些網站由於業務需求,可能提供檔案檢視或下載的功能,如果對使用者檢視或下載的檔案不做限制,則惡意使用者就能夠檢視或下載任意的檔案,可以是原始碼檔案、敏感檔案等。 1.2 漏洞危害    &nb

ASP.NET Web API實現簡單的檔案下載與上傳

ASP.NET Web API實現簡單的檔案下載與上傳。首先建立一個ASP.NET Web API專案,然後在專案下建立FileRoot目錄並在該目錄下建立ReportTemplate.xlsx檔案,用於下面示例的使用。 1、檔案下載 示例:實現報表模板檔案下載功能。 1.1 後端程

Web中如何應用檔案下載

1.為什麼有些檔案可以下載 而有些檔案不能下載 在瀏覽器中有的瀏覽器可以自己解析 即可以下載 但有一些瀏覽器自己解析不了 就需要下載 2.什麼情況下需要在伺服器端編寫檔案下載的程式碼 瀏覽器可以解析的程式碼需要編寫檔案下載的程式碼

Java Web MVC檔案上傳下載

1檔案上傳概述 1.1檔案上傳的作用 例如網路硬碟!就是用來上傳下載檔案的。在智聯招聘上填寫一個完整的簡歷還需要上傳照片呢。 1.2檔案上傳對頁面的要求 上傳檔案的要求比較多,需要記一下: 必須使

c#檔案下載無響應?(已解決,記錄一下)(我使用的是MVC框架,網頁程式設計)

 1.前端js !!!我使用了form表單提交,檔案下載才有反應,還不知道原因,如果有知道的大神,麻煩透露一下哦,嘻嘻 $("#download").click(function () {//按鈕的點選事件 alert("aa");

aiohttp web方式提供檔案下載服務

python3.6使用了aiohttp, aiofiles庫,非同步操作服務端程式碼如下,啟動服務後,預設監聽0.0.0.0:8080沒有做任何異常處理,適用於小檔案,僅供參考 file_server.py: import aiofiles import asyncio import os from ai

網頁JS下載檔案,並改檔名

1、使用加入多個iframe方法,開啟多個連結function _createIFrame(url, triggerDelay, removeDelay) { setTimeout(() => { let frame = document.cre

JAVA WEB IO流下載檔案

@ResponseBody @RequestMapping("/file") public void findfile(String fjid, HttpServletResponse response) throws IOException { try {

Java Web基礎知識之檔案下載:當你下載檔案的時候到底發生了什麼?

從網上下載檔案幾乎是每個人都會遇到的,不管是圖片、文字檔案還是一些視訊,但是我們真的知道在下載的過程中發生了什麼嗎?本文章就學習一下其中的原理。 關於檔案下載存在靜態下載和動態下載兩種,靜態下載是比較容易的,我們平常在網上對很多圖片和和視訊等的下載有很多其實就是靜態下載,那

WEB 中的檔案下載

在 WEB 開發中,我們會期望使用者在點選某個連結的時候,下載一個檔案(不管這個檔案能不能被瀏覽器解析,都要下載)。以前接觸過一種方式,就是在響應 header 中設定 force-download : 12 Content-Type: application/fo

Java Web檔案上傳與下載

本文包括: 1、檔案上傳概述 2、利用 Commons-fileupload 元件實現檔案上傳 3、核心API——DiskFileItemFactory 4、核心API——ServletFileUpload 5、核心API——FileItem 6、拓展——使用 JavaScript 生成多個動態上傳輸入項

java web Servlet--實現檔案下載功能

先上一段原始碼,這一段檔案下載,是在 Servlet 上面實現的。package util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import j

用python如何將Web伺服器上的指定檔案下載下來

本文轉自:http://blog.donews.com/limodou/archive/2005/02/16/278221.aspxQ:如何方便的計算兩個時間的差,如兩個時間相差幾天,幾小時等A:使用datetime模組可以很方便的解決這個問題,舉例如下:    >>> import dat