前端文件下載方式

前端對(duì)于文件下載這塊的一些常用的基本方法计福。

一? 通過a標(biāo)簽來下載文件

? ? ? ? ??在html5中 a 標(biāo)簽多了一個(gè)屬性download涝动;沒有添加download屬性蘸嘶,用戶點(diǎn)擊a鏈接瀏覽器會(huì)打開并顯示該鏈接的內(nèi)容烫堤,若在a鏈接中加了 download 屬性,點(diǎn)擊該鏈接就不會(huì)打開這個(gè)文件昧谊,而是直接下載刽虹。注意:download屬性是html5中的a標(biāo)簽的新特性,與不支持h5的低版本瀏覽器不兼容呢诬!

?????????ex: <a download="文件名"?href="文件下載接口地址"></a>? ?

????????download屬性的值是下載后的文件名涌哲,href屬性的值是 后端文件下載接口地址

? ? ? ? 點(diǎn)擊非a標(biāo)簽按鈕下載文件,或者其他一些情況尚镰,可以通過創(chuàng)建a標(biāo)簽來下載

? ?????????function downloadFile(fileurl, filename) {

????????????????????var? a = document.createElement('a');? ? ? ? ? ?/ / 創(chuàng)建隱藏的可下載鏈接

? ? ? ? ? ? ? ? ? ? a.download = filename;

? ? ????????????????a.style.display = 'none';

????????????????????var? blob = new Blob(fileurl);? ? ? ? ? ? ? ? ? ? ? ? ? ? // 字符內(nèi)容轉(zhuǎn)變成blob地址

? ? ? ? ? ? ? ? ? ? ?a.href = URL.createObjectURL(blob);

????????????????????document.body.appendChild(a);? ? ? ? ? ? ? ? ? ?

? ? ????????????????a.click();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 觸發(fā)點(diǎn)擊

? ? ? ? ? ? ? ? ? ? ?document.body.removeChild(a);? ? ? ? ? ? ? ? ? // 然后移除

????????????};

? ? ? ? //downFile(fileurl, filename)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//fileurl?:? 下載地址? ?阀圾;filename :?保存名稱?

二? 通過window.open()

? ? ? ? ex:window.open(fileurl)

三? 通過form表單

????? 原生? js? :

? ? ? ? var form = document.createElement("form");? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?document.getElementsByTagName('body')[0].appendChild(form);

? ? ? ? form.setAttribute('style', 'display:none');

? ? ? ? form.setAttribute('target', '');

? ? ? ? form.setAttribute('method', 'get');

? ? ? ? form.setAttribute('action', fileurl);//下載文件的請(qǐng)求路徑

? ? ? ? var input1 = document.createElement('input');

? ? ? ? input1.setAttribute('type', 'hidden');

? ? ? ? input1.setAttribute('name', 'clinicId');

? ? ? ? input1.setAttribute('value', sess.clinicId);

? ? ? ? form.appendChild(input1);

? ? ? ? form.submit();

? ? ? ? jQuery:

? ? ? ? var form = $("<form>");? ? ? ? ? ? ? ? ? ? //定義一個(gè)form表單

? ? ? ? form.attr('style', 'display:none');? ? ? ? //下面為在form表單中添加查詢參數(shù)

? ? ? ? form.attr('target', '');

? ? ? ? form.attr('method', 'post');

? ? ? ? form.attr('action', fileurl);

? ? ? ? var input = $('<input>');

? ? ? ? input.attr('type', 'hidden');

? ? ? ? input.attr('name', 'exportPostTime');

? ? ? ? input.attr('value', timeString);

? ? ? ? $('body').append(form);? ? ? ? ? ? ? ? ? ? //將表單放置在web中

? ? ? ? form.append(input);? ? ? ? ? ? ? ? ? ? ? //將查詢參數(shù)控件提交到表單上

? ? ? ? form.submit();? ? ? ? ? ? ? ? ? ? ? ? ? ? //表單提交? ?

四? 通過? iframe和form

? ? ? 具體格式形式:

????<iframe name="iframe的name屬性值"? ? ?style="display:none;"></iframe>

? ? <form target="iframe的name屬性值"? ?method="post"? ? ? action="指向后端請(qǐng)求鏈接"? ? ?style="display:none;"? ??>

? ? ? ? ????<input type="text" name="后臺(tái)對(duì)應(yīng)的name字段"? ? ??value =?"上傳的值" />

????</form>


? ? js實(shí)現(xiàn)

? ??$("#downLoadIFrame").remove();

? ? ? ? var $Iframe = $("<iframe>");

? ? ? ? $Iframe.attr("name", "iframe的name屬性值");

? ? ? ? $Iframe.attr("id", "downLoadIFrame");

? ? ? ? $Iframe.attr("style", "diaplay:none");

? ? ? ? $("body").append($Iframe);

? ? ? ? var $form = $("<form>");

? ? ? ? $form.empty();

? ? ? ? $form.attr("style", "diaplay:none");

? ? ? ? $form.attr("target", "iframe的name屬性值"); // 對(duì)應(yīng)iframe的name屬性值

? ? ? ? $form.attr("method", "post");

? ? ? ? $form.attr("action", "指向后端請(qǐng)求鏈接"); // 指向后端請(qǐng)求鏈接

? ? ? ? $("body").append($form);

? ? ? ? // 新建input, 并設(shè)置name屬性和value的值

? ? ? ? var $input = $("<input>");

? ? ? ? $input.attr("type", "hidden");

? ? ? ? $input.attr("name", "后臺(tái)對(duì)應(yīng)的name字段"); // 填上后臺(tái)對(duì)應(yīng)的name字段

? ? ? ? $input.attr("value", "上傳的值"); // 填上傳的值

? ? ? ? $form.append($input);

? ? ? ? $form.submit();

五? 總結(jié)

? ? ? ? 首先,要知道你的fileurl是怎么來的狗唉,然后注意文件下載是"post"還是"get"請(qǐng)求初烘,還要注意兼容性。

? ? ? ? 本篇文章只是展示了幾種常用的,簡(jiǎn)單的文件下載方式肾筐,大家參考之余哆料,可以發(fā)散思維,不如看一下文件下載的插件是怎么實(shí)現(xiàn)的吗铐,文件批量是下載是可以怎么實(shí)現(xiàn)剧劝,文件流中,圖片抓歼,視頻讥此,音頻等是怎么做到批量下載!

? ? ? ? ? 最后谣妻,感謝大家閱讀萄喳,希望大家不吝賜教,不吝點(diǎn)贊蹋半!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末他巨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子减江,更是在濱河造成了極大的恐慌染突,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辈灼,死亡現(xiàn)場(chǎng)離奇詭異份企,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巡莹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門司志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人降宅,你說我怎么就攤上這事骂远。” “怎么了腰根?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵激才,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我额嘿,道長(zhǎng)瘸恼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任岩睁,我火速辦了婚禮钞脂,結(jié)果婚禮上揣云,老公的妹妹穿的比我還像新娘捕儒。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布刘莹。 她就那樣靜靜地躺著阎毅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪点弯。 梳的紋絲不亂的頭發(fā)上扇调,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音抢肛,去河邊找鬼狼钮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捡絮,可吹牛的內(nèi)容都是我干的熬芜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼福稳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涎拉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起的圆,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤鼓拧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后越妈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體季俩,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年梅掠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了种玛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓤檐,死狀恐怖赂韵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挠蛉,我是刑警寧澤祭示,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站谴古,受9級(jí)特大地震影響质涛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掰担,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一汇陆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧带饱,春花似錦毡代、人聲如沸阅羹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捏鱼。三九已至,卻和暖如春酪耕,著一層夾襖步出監(jiān)牢的瞬間导梆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工迂烁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留看尼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓盟步,卻偏偏與公主長(zhǎng)得像狡忙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子址芯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,031評(píng)論 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5灾茁? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,486評(píng)論 1 45
  • 北京2018年4月1日上午拓颓,NBA常規(guī)賽勇士客戰(zhàn)國(guó)王的比賽中,發(fā)生了令人痛心不已的一幕描孟。比賽進(jìn)行到第三節(jié)還有41...
    Curry_宇閱讀 1,189評(píng)論 1 1
  • 本章轉(zhuǎn)載自新浪博客網(wǎng)友:blog.sina.com.cn/s/blog_7f5571aa0102w2tv.html...
    czboy閱讀 1,460評(píng)論 0 11
  • 迦藍(lán)遵照佛陀之命驶睦,去靈山外的森林照顧孔雀∧湫眩孔雀是佛母之子场航,食火,食萬物之靈廉羔,嗜人心溉痢。 佛陀問迦藍(lán),你可怕孔雀憋他?迦藍(lán)...
    豬剛鬣丶閱讀 465評(píng)論 0 0