jsp下載檔案demo

來源:互聯網
上載者:User
jsp下載檔案demo

1.前台

2.後台

1.前台

http://www.javaeye.com/topic/446631

為什麼要選擇js方式下載檔案?因為需要根據你的點擊,及選擇來動態計算的。 
如果直接 ajax 請求,總會出現些問題...具體表現為檔案直接以字串形式返回。 

首先方案一,使用window.open(url),這樣會有一個問題,因為會開啟一個視窗!雖然這個視窗會在點擊下載時關閉,但看起來確實不美觀! 

方案二,使用Iframe ,具體見代碼: 

Javascript代碼 
  1. function downloadFile(url){  
  2.   var elemIF = document.createElement("iframe");  
  3.   elemIF.src = url;  
  4.   elemIF.style.display = "none";  
  5.   document.body.appendChild(elemIF);  
  6. }  

完美解決! 
(PS:發現構造語言來描述明白一件事真是個累人的活啊,看不懂,輕拍)

  1. Ext.Ajax.request({  
  2.     url:'getPath.action',  
  3.     success:function(res){  
  4.         var obj = Ext.decode(res.responseText);  
  5.         //console.log(obj);//可以到Firefox的firebug下面看看obj裡面的結構  
  6.         //加入getPath返回的json為{'path':'upload/abc.jpg'}  
  7.         window.location.href = obj.path;//這樣就可以彈出下載對話方塊了  
  8.     }  
  9. });  

只要連結的檔案存在,就會給出彈出儲存對話方塊. 

<a href="test.rmvb">下載此檔案 </a> 

如果你一定要用JS的話,有兩種辦法,推薦第一種: 

辦法1: //好處就是,指定下載的檔案如果不存在,瀏覽器地址也不會有什麼變化.反之則提示儲存. 
HTML code <a href="#" onClick="download()">下載檔案</a> <iframe id="downloadURL" height="0" width="0" src=""></iframe> <script language="javascript"> function download(){ document.getElementById("downloadURL").src="test.rmvb"; } </script> 

辦法2: //缺點就是,指定下載的檔案如果不存在,瀏覽器地址會變化. 
HTML code <a href="#" onClick="download(this)">下載檔案</a> <script language="javascript"> function download(obj){ obj.href="test.rmvb"; } </script> 

2.背景程式

public void downloadPdf(HttpServletRequest request, HttpServletResponse response)<br />throws Exception {<br />String id = request.getParameter("projectid");</p><p>String filename = this.dao.queryDocFillName(id);<br />String path = request.getContextPath() + "/frontWeb/onecasefile/approvefile/" + filename + ".pdf";</p><p>File pdfFile = new File(request.getRealPath("/").concat(<br />"frontWeb/onecasefile/approvefile/").replace("\\", "/") + filename + ".pdf");<br />response.setContentType("application/pdf");<br />response.setContentType("application/force-download");<br />response.addHeader(<br /> "Content-Disposition","attachment; filename=" + "download" );<br />response.setContentLength( (int) pdfFile.length( ) );</p><p>FileInputStream input = new FileInputStream(pdfFile);<br />BufferedInputStream bufferedInputStream = new BufferedInputStream(input);<br />int readBytes = 0;<br />while((readBytes = bufferedInputStream.read( )) != -1)<br /> response.getOutputStream().write(readBytes);<br />}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.