AntSoul

          它總是在行走,行走,永遠(yuǎn)的行走…… 行走是它生存的恒久姿態(tài)和最佳造型。 它似乎有一雙不知疲倦的腳。 ———我說(shuō)的是螞蟻。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            42 隨筆 :: 0 文章 :: 1 評(píng)論 :: 0 Trackbacks
                  最近遇到個(gè)這樣的問(wèn)題(在不使用組件【如jspsmartupload】的情況下)在web頁(yè)面上如果一個(gè)有個(gè)連接,連接的的是文本文件,當(dāng)左鍵點(diǎn)擊的話會(huì)查看這個(gè)文件,右鍵點(diǎn)擊可以下載.但是如果是windows不識(shí)別的文件,左鍵點(diǎn)擊直接就下載了比如zip,那如何點(diǎn)擊左鍵直接下載.txt的文本文件呢?
               要直接下載一個(gè)文件,我們需要做兩件事,第一件事是:設(shè)定響應(yīng)的內(nèi)容類(lèi)為“application/octet-stream”,大小寫(xiě)無(wú)關(guān)。第二件事是:設(shè)置HTTP的響應(yīng)頭名字為:Content-Disposition,設(shè)定值為:attachment; filename = theFileName。這里的theFileName就是出現(xiàn)在文件下載對(duì)話框里的默認(rèn)文件名,通常和所下載的文件名字相同,但也可以不同。
           
          代碼
          1. <meta http-equiv="Content-Type" content="text/html; charset=gbk">  
          2. <HTML>  
          3. <HEAD>  
          4.   
          5. </HEAD>  
          6.   
          7. <BODY>  
          8. <a href = "download1.jsp?filepath=d:\\&filename=1a.txt" >downloadtest1</a>  
          9.   
          10. </BODY>  
          11. </HTML>  

          這是頁(yè)面上的連接,我傳了個(gè)路徑和文件名
          代碼
          1. <%    
          2.     String filename = request.getParameter("filename");//"1a.txt";    
          3.     String filepath = request.getParameter("filepath");//"d:\\";   
          4.      int i = 0;   
          5.     response.setContentType("application/octet-stream");  
          6.     response.setHeader("Content-Disposition","attachment;filename = "+filename);    
          7.     java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath+filename);   
          8.     while((i= fileInputStream.read()) != -1){   
          9.         out.write(i);   
          10.     }   
          11. %>  
          1. <%    
          2.     String filename = request.getParameter("filename");//"1a.txt";    
          3.     String filepath = request.getParameter("filepath");//"d:\\";   
          4.      int i = 0;   
          5.     response.setContentType("application/octet-stream");  
          6.     response.setHeader("Content-Disposition","attachment;filename = "+filename);    
          7.     java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath+filename);   
          8.     while((i= fileInputStream.read()) != -1){   
          9.         out.write(i);   
          10.     }   
          11. %>  

          這是被調(diào)用的download1.jsp,這個(gè)jsp就是執(zhí)行直接下載文件。
          參考一下JS來(lái)實(shí)現(xiàn):

          function svcode(obj) {
          var winname = window.open('', '_blank', 'height=1,width=1,top=200,left=300');
          winname.document.open('text/html', 'replace');
          winname.document.writeln(obj.value);
          winname.document.execCommand('saveas','','code.txt');
          winname.close();
          }


          posted on 2007-04-10 09:14 yok 閱讀(3716) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Scripts

          評(píng)論

          # re: 如何點(diǎn)擊連接直接下載(.txt文本)文件 2008-12-01 15:16 juan
          不會(huì)下載txt文本,怎樣下啊  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 柘城县| 泽库县| 横峰县| 阿鲁科尔沁旗| 东安县| 兴城市| 东兴市| 武安市| 麻城市| 崇信县| 东辽县| 赣榆县| 卢湾区| 通河县| 本溪市| 九江县| 黑山县| 乌兰浩特市| 扎赉特旗| 石家庄市| 温宿县| 腾冲县| 济南市| 红桥区| 遵义县| 南宁市| 铜陵市| 清徐县| 旺苍县| 海宁市| 仪陇县| 扎赉特旗| 桂阳县| 循化| 安阳县| 莫力| 嘉兴市| 卢湾区| 德清县| 宝山区| 靖江市|