亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Emberjs 通過 axios 下載文件的方法

2019-11-19 10:54:14
字體:
來源:轉載
供稿:網友

摘要: 目前項目中需要與后端合作,通過發送 GET 請求,后端返回文件流,前端進行文件的下載。

使用到的技術有:

  1. Emberjs
  2. axios

思路

接到這個需求的話,想著使用創建 a 鏈接,然后模擬點擊 a 鏈接來完成下載,但是情況不是這樣的。后端有多于一個的下載接口,首先是生成下載文件的接口, 這個接口主要是返回 需要下載的文件的 name 以及相應的接口地址。而下載的文件可能不止一個,同時,對文件接口地址發送 GET 請求,會返回文件流,但是我們需要的是 CSV 格式的文件,所以想到通過 axios 來實現這個需求。

具體做法

既然方向確定了,那就是去做了。

在項目中安裝插件/導入 axios

現在 Emberjs 封裝好的 axios 插件 - ember-axios ,使用 ember install axios 。這個插件沒有文檔,所以只能看源碼,還好源碼比較簡單,就是簡單的將 axios 的一些方法封裝成一個 service 內的方法。

在項目文件中引入 axios

安裝后在 Emberjs 項目中將此 service 引入近來

import { inject as service } from '@ember/service';export default Controller.extend({ // ... axios: service() // ...});

這樣即可使用這個插件中封裝的一些 axios 的方法。

使用

之前也說過當前項目需要先發送一個請求,請求文件的接口地址。返回的值的格式為:

{ "fileNames":[  "filename=downloadFile1.csv",  "filename=downloadFile2.csv" ], "status":"ok"}

可以看到,如我們所想的那樣,返回的并不一定是單個文件的地址,所以我們在接收到這個數據后:

import { isEmpty } from '@ember/utils';import { all, reject } from 'rsvp';//....then(data=> { if (data.status !== 'ok' || isEmpty(data.fileNames)) {  return reject(); } return all(data.fileNames.map(ele => {  return axios.axios({   url: `${ele}`,   method: 'get',   responseType: 'blob'  }); }));});

在等待上面的請求發送成功之后,我們看看這段代碼的意思。最上面的兩個 import 是引入的一些 Emberjs 中封裝的一些通用方法以及 promies 方法.在 then 之內的代碼,先是驗證是否返回成功。然后對數據進行遍歷,并發送 axios 封裝的 get 請求。 其中 axios.axios() ember-axios 封裝的 axios.create(this.config()) 源碼地址 ,同時注意的是 config 對象中 responseType 填寫的是 blob ,這是保證文件能夠下載成功的基礎。

請求發送成功之后,我們需要對返回的數據進行處理,也就是:

.then(data => { data.forEach((res, index) => {  const content = res.data,   blob = new Blob([content], { type: 'text/csv' }),   fileName = fileNames[index];  if ('download' in document.createElement('a')) { // 非IE下載   const elink = document.createElement('a');   elink.download = fileName;   elink.style.display = 'none';   elink.href = URL.createObjectURL(blob);   document.body.appendChild(elink);   elink.click();   URL.revokeObjectURL(elink.href); // 釋放URL 對象   document.body.removeChild(elink);  } else { // IE10+下載   navigator.msSaveBlob(blob, fileName);  } });}).catch(() => {});

這段代碼需要注意的是我們 new Blob() 接收的是 res.data 這個需要特別注意。另外就是此方法的第二個參數接收的 {type: 'text/csv'} ,因為次項目下載的是 csv 文件格式,其他的可以參考 MIME . 其他的就是創建一個 display:none 的 a 標簽,并觸發點擊事件。這時候瀏覽器就會進行下載。

總結

這算是在 Embjerjs 中進行下載流文件的一次船新嘗試。

以上所述是小編給大家介紹的Emberjs 通過 axios 下載文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国产精品电影| 亚洲欧美日韩视频一区| 久久夜色撩人精品| 欧美日韩国产精品| 国产视频精品一区二区三区| 宅男66日本亚洲欧美视频| 日韩电影免费在线观看| 国产精品女人久久久久久| 欧美激情在线狂野欧美精品| 97欧美精品一区二区三区| 97av视频在线| 国产美女扒开尿口久久久| 国产精品一区二区三区免费视频| 欧美激情免费在线| xvideos国产精品| 92看片淫黄大片欧美看国产片| 久久久久久久国产精品视频| 亚洲国产精品久久久| 国产精品一区二区久久久| 久久视频国产精品免费视频在线| 亚洲 日韩 国产第一| 日本一区二区在线播放| 欧美国产日韩一区| 成人免费看吃奶视频网站| 国产午夜精品免费一区二区三区| 日日狠狠久久偷偷四色综合免费| 91探花福利精品国产自产在线| 日本亚洲欧美成人| 蜜月aⅴ免费一区二区三区| 国产精品久久久久久亚洲影视| 欧美国产精品人人做人人爱| 欧美不卡视频一区发布| 色在人av网站天堂精品| 九九久久国产精品| 欧美成人免费在线视频| 国产美女精品视频免费观看| 1769国内精品视频在线播放| 久久久久久久久久久免费| 成人国产在线视频| 欧美性资源免费| 日本精品视频在线观看| 欧美一级成年大片在线观看| 欧美高清在线观看| 欧美成人高清视频| 国内外成人免费激情在线视频网站| 成人美女免费网站视频| 91中文字幕在线观看| 亚洲精品www久久久久久广东| 中文字幕国产精品| 成人黄色免费看| 久久久视频在线| 91高潮在线观看| 国产伦精品免费视频| 国产成人久久久精品一区| 国产成人高清激情视频在线观看| 亚洲电影免费观看高清完整版在线| 51精品国产黑色丝袜高跟鞋| 日韩一级黄色av| 91av在线免费观看| 91av在线视频观看| 国产精品久久77777| 欧美激情亚洲自拍| 国产精品扒开腿爽爽爽视频| 国产亚洲欧洲高清一区| 国产一区二区三区三区在线观看| 亚洲日本中文字幕免费在线不卡| 日韩精品中文字| 最新69国产成人精品视频免费| 欧美高清视频在线播放| 日韩av在线天堂网| 91黑丝在线观看| 一个人看的www久久| 欧美在线免费看| 中文字幕免费精品一区| 亚洲精品av在线播放| 亚洲色图校园春色| 亚洲一区二区免费| 日韩欧美国产激情| 国产乱人伦真实精品视频| 久久91精品国产91久久跳| 亚洲四色影视在线观看| 国产中文字幕日韩| 91理论片午午论夜理片久久| 亚洲欧美精品一区| 亚洲性生活视频| 欧美亚洲视频在线观看| 日韩精品中文字幕视频在线| 国产这里只有精品| 中文字幕综合一区| 日韩在线观看免费高清| 亚洲性无码av在线| 欧美中文字幕视频在线观看| 精品自在线视频| 精品久久久久久久久中文字幕| 日韩性xxxx爱| 久久久久久97| 国产91精品久| 久久国产精品久久久久久| 久久久久国产精品免费| 欧美日韩在线视频一区二区| 久久久久国产精品免费| 欧美在线视频在线播放完整版免费观看| 亚洲福利视频久久| 成人激情视频网| 国产在线999| 日韩第一页在线| 亚洲欧洲自拍偷拍| 欧美一级淫片丝袜脚交| 亚洲欧美另类在线观看| 91最新国产视频| 高清视频欧美一级| 亚洲精品久久久久久久久久久久| 一区二区欧美激情| 亚洲白虎美女被爆操| 欧美特黄级在线| 午夜精品久久久久久99热软件| 国产精品女主播| 一区二区欧美激情| 欧美在线视频一二三| 亚洲毛片在线看| 国产在线98福利播放视频| 91网在线免费观看| 国产成人精品视频在线| 欧美一级黑人aaaaaaa做受| 视频在线观看一区二区| 精品国产91乱高清在线观看| 亚洲欧美三级伦理| 国产欧美精品日韩精品| 4438全国成人免费| 亚洲欧美国产视频| 45www国产精品网站| 久久男人资源视频| 亚洲精品乱码久久久久久按摩观| 精品久久久久久久久久久久久| 亚洲a在线播放| 国产精品一区二区三区成人| 久久久999国产| 日韩人体视频一二区| 九九热精品视频| 国产欧美 在线欧美| 国产区亚洲区欧美区| 成人444kkkk在线观看| 欧美日本高清一区| 久久久亚洲精品视频| 欧美精品xxx| 国产成人鲁鲁免费视频a| 欧美一级片在线播放| 欧美在线播放视频| 国产丝袜一区二区三区免费视频| 成人国产精品一区| 日韩精品视频在线免费观看| 精品美女国产在线| 日韩国产欧美精品在线| 亚洲石原莉奈一区二区在线观看| 亚洲自拍偷拍区| 日韩中文字幕在线播放| 亚洲黄色有码视频| 亚洲精品理论电影| 国产精品视频区| 不卡在线观看电视剧完整版| 黄色一区二区在线| 欧美成人亚洲成人日韩成人| 91在线观看免费观看| 亚洲色图第三页|