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

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

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

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

在服務(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(); 
} 
} 
}

當(dāng)我們?cè)谇岸苏?qǐng)求這個(gè)地址時(shí),服務(wù)器先找出文件,設(shè)置響應(yīng)頭,然后通過流輸出到瀏覽器端。

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

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

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

inline //在線打開

attachment //作為附件下載

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

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

前端請(qǐng)求有三種方式:

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);

​當(dāng)iframe被append到body中時(shí),會(huì)自動(dòng)請(qǐng)求下載鏈接。

3.open

window.open("download.html");

相關(guān)文章

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

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

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

    js實(shí)現(xiàn)的捐贈(zèng)管理完整實(shí)例

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

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

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

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

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

    vant倒序年月日期組件封裝實(shí)例詳解

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

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

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

    Bootstarp基本模版學(xué)習(xí)教程

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

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

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

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

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

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

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

最新評(píng)論