欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java、javascript實現(xiàn)附件下載示例

 更新時間:2014年08月14日 17:34:30   投稿:whsnow  
在web開發(fā)中,經(jīng)常需要開發(fā)“下載”這一模塊,下面使用java、javascript實現(xiàn)附件下載,需要的朋友可以參考下

在web開發(fā)中,經(jīng)常需要開發(fā)“下載”這一模塊,以下給出一個簡單的例子。

在服務(wù)器端,使用java開發(fā):

@RequestMapping(value = "download.html", method = RequestMethod.GET) 
public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { 
response.setContentType("charset=UTF-8"); 
File file = new File(path); 
response.setHeader("Content-Disposition", "attachment; filename=a"); 
BufferedInputStream bis = null; 
BufferedOutputStream bos = null; 
OutputStream fos = null; 
InputStream fis = null; 
try { 
fis = new FileInputStream(file.getAbsolutePath()); 
bis = new BufferedInputStream(fis); 
fos = response.getOutputStream(); 
bos = new BufferedOutputStream(fos); 
int bytesRead = 0; 
byte[] buffer = new byte[5 * 1024]; 
while ((bytesRead = bis.read(buffer)) != -1) { 
bos.write(buffer, 0, bytesRead); 
} 
bos.flush(); 
}catch(E e){ 
}finally { 
try { 
bis.close(); 
bos.close(); 
fos.close(); 
fis.close(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 
}

當我們在前端請求這個地址時,服務(wù)器先找出文件,設(shè)置響應(yīng)頭,然后通過流輸出到瀏覽器端。

瀏覽器在頭中發(fā)現(xiàn)該響應(yīng)的主體是流文件,則自動會調(diào)用另存為的窗口,讓用戶保存下載。

這里有個關(guān)鍵就是Content-Disposition這個頭屬性,Content-Disposition是MIME協(xié)議的擴展,用于指示如何讓客戶端顯示附件的文件。

它可以設(shè)置為兩個值:

inline //在線打開

attachment //作為附件下載

這里我們設(shè)置的值為attachment,所以可以被識別為附件并下載。

上面講了如何寫服務(wù)器端,下面講前端如何請求。

前端請求有三種方式:

1.Form

<form action='download.html' method='post'> 
<input type='submit'/> 
</form>

2.iframe

var iframe = "<iframe style='display:none' src='download.html'></iframe>" 
body.append(iframe);

​當iframe被append到body中時,會自動請求下載鏈接。

3.open

window.open("download.html");

相關(guān)文章

  • JavaScript 對象、函數(shù)和繼承

    JavaScript 對象、函數(shù)和繼承

    JavaScript可以說是一個基于對象的編程語言,為什么說是基于對象而不是面向?qū)ο?,因為JavaScript自身只實現(xiàn)了封裝,而沒有實現(xiàn)繼承和多態(tài)。
    2009-07-07
  • js實現(xiàn)的捐贈管理完整實例

    js實現(xiàn)的捐贈管理完整實例

    這篇文章主要介紹了js實現(xiàn)的捐贈管理完整實例,包括了html頁面、js腳本及css樣式的完整實現(xiàn)代碼,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • JS面試高頻單線程與事件循環(huán)深入解析

    JS面試高頻單線程與事件循環(huán)深入解析

    JavaScript是一種單線程語言,它在任何給定時間只能執(zhí)行一個任務(wù),然而js確能夠處理異步操作,這得益于其事件循環(huán)(Event Loop)機制,今天這篇文章帶領(lǐng)大家深入理解JavaScript單線程特性,以及講解事件循環(huán)和js多線程知識
    2023-10-10
  • Bootstrap+jfinal退出系統(tǒng)彈出確認框的實現(xiàn)方法

    Bootstrap+jfinal退出系統(tǒng)彈出確認框的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了Bootstrap+jfinal退出系統(tǒng)彈出框的實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • vant倒序年月日期組件封裝實例詳解

    vant倒序年月日期組件封裝實例詳解

    這篇文章主要介紹了vant倒序年月日期組件封裝實例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • 一篇文章讓你輕松記住js的隱式轉(zhuǎn)化

    一篇文章讓你輕松記住js的隱式轉(zhuǎn)化

    這篇文章主要給大家介紹了如何通過一篇文章讓你輕松記住js的隱式轉(zhuǎn)化的相關(guān)資料,通過在各種情況下發(fā)生的隱式類型的例子,來詳細的了解隱式類型轉(zhuǎn)換的過程,需要的朋友可以參考下
    2022-01-01
  • Bootstarp基本模版學習教程

    Bootstarp基本模版學習教程

    這篇文章主要為大家詳細介紹了Bootstarp基本模版學習教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JavaScript如何實現(xiàn)元素全排列實例代碼

    JavaScript如何實現(xiàn)元素全排列實例代碼

    這篇文章主要給大家介紹了關(guān)于JavaScript如何實現(xiàn)元素全排列的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • JavaScript鍵盤事件響應(yīng)順序詳解

    JavaScript鍵盤事件響應(yīng)順序詳解

    這篇文章主要為大家詳細介紹了JavaScript鍵盤事件響應(yīng)順序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 解決select2在bootstrap modal中不能正常使用的問題

    解決select2在bootstrap modal中不能正常使用的問題

    今天小編就為大家分享一篇解決select2在bootstrap modal中不能正常使用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論