日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

直接让浏览器下载文件而不打开

發布時間:2025/1/21 HTML 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直接让浏览器下载文件而不打开 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

直接讓客戶端瀏覽器下載已知類型(*.doc)的文件? ,而不使用關聯程序打開。
? ?
? ? Web開發人員都有過這樣的疑問,如何讓一個文件,尤其是一個已知類型的文件(*.doc),發送到客戶端,直接提示讓瀏覽者下載,而不是用與它相關聯的程序打開。

? ? 以前我們最常用的辦法就是把這樣的文件加到鏈接上,這樣可以讓瀏覽者通過點擊鼠標右鍵的目標另存為來下載所鏈接的文件。但是,這樣有兩個不足的地方: ?
? ? 一是:如果瀏覽器能夠識別已下載文件的擴展名,則瀏覽器就會激活該擴展名所關聯的程序來打開所下載的文件。比如:在Windows平臺上,如果用戶點擊的鏈接鏈接的是一個“.doc”文件的話,那么,瀏覽器就會啟動Microsoft ? Word應用程序來打開它。 ?
? ? 二是:如果采用鏈接的辦法的話,任何能看到該鏈接的人都可以下載該文件,你雖然也可以對所下載的文件進行權限設置,但那樣做也不是很方便的。有時候我們需要更為靈活和富有彈性的方式,下面的程序能夠很方便地克服以上兩方面的不足。 ?
? ? 這種辦法是可靠的,但你必須記住:沒有授權的用戶不能夠通過在瀏覽器地址欄里輸入文件的URL來取得該文件的下載權。所以,要下載的文件應該放到虛擬目錄之外的一個目錄里,比如:如果你的虛擬目錄是C:\Mengxianhui\Tomcat4\Website\MyApp的話,那么,存放在該目錄和該目錄下的任何子目錄下所有文件對因特網上的任何用戶都是可見的。

? ? 要直接下載一個文件,我們需要做兩件事,

?? 第一件事是:設定響應的內容類為“application/octet-stream”,大小寫無關。

?? 第二件事是:設置HTTP的響應頭名字為:Content-Disposition,設定值為:attachment; ? filename ? = ? theFileName。這里的theFileName就是出現在文件下載對話框里的默認文件名,通常和所下載的文件名字相同,但也可以不同。

?

下面,我們就平常最常用的JSP和ASP頁面來舉一個實際應用的例子。 ?
? ? ?
? ? ? download.JSP頁面的例子:

<% // 得到文件名字和路徑 String filename = "MengxianhuiDocTest.doc"; String filepath = "D:\\"; // 設置響應頭和下載保存的文件名 response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); // 打開指定文件的流信息 java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + filename); // 寫出流信息 int i; while ((i=fileInputStream.read()) != -1) { out.write(i); } fileInputStream.close(); out.close(); %> ?

下載時被顯示的文件名包含中文時,要編碼
String filename=new String("手冊.pdf".getBytes("GBK"),"8859_1");

?

如果使用了Struts 2,可以參看:

Struts2 通過"流"下載文件時顯示中文文件名

?

轉載于:https://my.oschina.net/pangzhuzhu/blog/317952

總結

以上是生活随笔為你收集整理的直接让浏览器下载文件而不打开的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。