<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 89,  comments - 98,  trackbacks - 0
    Web開發人員都有過這樣的疑問,如何讓一個文件,尤其是一個已知類型的文件,發送到客戶端,直接提示讓瀏覽者下載,而不是用與它相關聯的程序打開。以前我們最常用的辦法就是把這樣的文件加到鏈接上,這樣可以讓瀏覽者通過點擊鼠標右鍵的目標另存為來下載所鏈接的文件。但是,這樣有兩個不足的地方:
    一是:如果瀏覽器能夠識別已下載文件的擴展名,則瀏覽器就會激活該擴展名所關聯的程序來打開所下載的文件。比如:在Windows平臺上,如果用戶點擊的鏈接鏈接的是一個“.doc”文件的話,那么,瀏覽器就會啟動Microsoft Word應用程序來打開它。
    二是:如果采用鏈接的辦法的話,任何能看到該鏈接的人都可以下載該文件,你雖然也可以對所下載的文件進行權限設置,但那樣做也不是很方便的。有時候我們需要更為靈活和富有彈性的方式,下面的程序能夠很方便地克服以上兩方面的不足。
    這種辦法是可靠的,但你必須記住:沒有授權的用戶不能夠通過在瀏覽器地址欄里輸入文件的URL來取得該文件的下載權。所以,要下載的文件應該放到虛擬目錄之外的一個目錄里,比如:如果你的虛擬目錄是C:\Mengxianhui\Tomcat4\Website\MyApp的話,那么,存放在該目錄和該目錄下的任何子目錄下所有文件對因特網上的任何用戶都是可見的。要直接下載一個文件,我們需要做兩件事,第一件事是:設定響應的內容類為“application/octet-stream”,大小寫無關。第二件事是:設置HTTP的響應頭名字為:Content-Disposition,設定值為:attachment; filename = theFileName。這里的theFileName就是出現在文件下載對話框里的默認文件名,通常和所下載的文件名字相同,但也可以不同。下面,我們就平常最常用的JSP和ASP頁面來舉一個實際應用的例子。

    TestFileDownload.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();
    %>

    值得注意的是:在你要下載的文件內容里,除了文件的內容之外,不應該再附加有其它任何的字符,包括空格和回車換行符。我們有時在編寫代碼的時候,為了使代碼清晰可讀,往往會添加一些空格、制表符或者回車換行符,這樣雖然看起來比較清晰,但有時可能會得不到正確的結果。比如:
    <%@ page import="java.io.*"
    %> <jsp:useBean id="MyBeanFromMengxianhui" scope="page"
    class="com.Mengxianhui.DownloadBean" />
    應該寫成這樣:
    <%@ page import="java.io.*"%>

    <jsp:useBean id="MyBeanFromMengxianhui" scope="page" class="com.Mengxianhui.DownloadBean" />
    posted on 2006-09-08 15:22 水煮三國 閱讀(593) 評論(2)  編輯  收藏 所屬分類: J2EE

    FeedBack:
    # re: JSP 制作文件下載碰到的問題
    2006-09-08 23:07 | JonneyQuest
    可以設置conf/web.xml里面那個叫jsp的Servlet,它有一個屬性屬性是trimSpace,設為true之后文件前后多余的空格和回車換行都會被忽略掉了。  回復  更多評論
      
    # re: JSP 制作文件下載碰到的問題
    2006-09-11 11:13 | 水煮三國
    謝謝JonneyQuest指正!  回復  更多評論
      
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 210793
    • 排名 - 266

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产免费啪嗒啪嗒视频看看| 久久久久久免费视频| 好爽好紧好大的免费视频国产| 亚洲天天做日日做天天欢毛片| 一级成人a毛片免费播放| 亚洲av无码专区国产乱码在线观看 | 亚洲精品国产成人专区| 拍拍拍无挡视频免费观看1000| 中文字幕亚洲综合久久菠萝蜜| 亚洲天堂免费在线视频| 亚洲一区二区三区影院| 中文字幕无码一区二区免费| 久久亚洲AV午夜福利精品一区| 99免费在线观看视频| 亚洲综合久久1区2区3区| 我的小后妈韩剧在线看免费高清版| 2020久久精品亚洲热综合一本| 嫩草影院免费观看| 99亚洲精品卡2卡三卡4卡2卡| 亚洲国产精品毛片av不卡在线| 一区二区三区在线免费| 亚洲精品无码MV在线观看| 一级毛片成人免费看免费不卡| 亚洲精品二三区伊人久久| 国产公开免费人成视频| 香蕉免费看一区二区三区| 亚洲AV成人精品网站在线播放| 免费国产成人高清在线观看网站| 亚洲成人福利在线观看| 日韩免费毛片视频| a级毛片高清免费视频就| 亚洲国产成a人v在线| 日本人的色道www免费一区| 五月天国产成人AV免费观看| 婷婷精品国产亚洲AV麻豆不片 | 黄色一级免费网站| 久久夜色精品国产亚洲AV动态图| 真人做人试看60分钟免费视频 | 亚洲国产成人无码AV在线| 好看的电影网站亚洲一区| 4hu四虎最新免费地址|