base64圖片轉化為網(wǎng)絡url路徑

背景:
后臺同學:同學蕉鸳,下載圖片你能不能自己下載,不用調我接口忍法,base64圖片你也有
我:想了一下潮尝,能成,用a標簽饿序,設置href為base64的值勉失,豈不是就完成了,就回答到原探,可以
后臺同學:那你能實現(xiàn)我就不提供了
我:沒問題乱凿,小case

開始吧:
3下5除2寫完了,就是將base64的值賦值給創(chuàng)建的a標簽的href
測試一下:完蛋咽弦,瀏覽器不允許
然后一頓百度猛如虎
后來找到了一個可行性方案徒蟆,跟大家分享一下,可以直接使用
思路:
1型型,將base64轉化為File 文件
2段审,動態(tài)創(chuàng)建a標簽實現(xiàn)文件流的下載
上代碼:
1)將base64轉化為File 文件

dataurl: 'data:image/png;base64,XXXXX...',
filename: '文件名'
base64ImgtoFile (dataurl, filename = 'file') {
      //將base64格式分割:['data:image/png;base64','XXXX']
      const arr = dataurl.split(',')
      // .*? 表示匹配任意字符到下一個符合條件的字符 剛好匹配到: 
     // image/png
      const mime = arr[0].match(/:(.*?);/)[1]  //image/png
      //[image,png] 獲取圖片類型后綴
      const suffix = mime.split('/')[1] //png
      const bstr = atob(arr[1])   //atob() 方法用于解碼使用 base-64 編碼的字符串
      let n = bstr.length
      const u8arr = new Uint8Array(n)
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n)
      }
      return new File([u8arr], `${filename}.${suffix}`, {
        type: mime
      })
    },

2)將1中得到的File轉化為圖片的URL

    const blob = this.base64ImgtoFile(dataurl)
    const blobUrl = window.URL.createObjectURL(blob);
    // 這里的文件名根據(jù)實際情況從響應頭或者url里獲取
    const filename = blob.name;
    const a = document.createElement('a');
    a.href = blobUrl;
    a.download = filename;;
    a.click();
    window.URL.revokeObjectURL(blobUrl);

通過上面2步即可完成前端base64圖片的下載

進一步思考:如何將文件轉換為base64那闹蒜?
例如:我們利用element el-upload很容易獲取到上傳的文件
利用new FileReader對象的readAsDataURL方法可以將讀取到的文件編碼成DataURL

changeFile(file, fileList) {
    var This = this;
    var reader = new FileReader();
    reader.readAsDataURL(file.raw);
    reader.onload = function(e){
        this.result; //base64編碼
        This.imageBaseUrl = this.result;
        This.imageUrl = this.result;
    }
},
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寺枉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绷落,更是在濱河造成了極大的恐慌姥闪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砌烁,死亡現(xiàn)場離奇詭異筐喳,居然都是意外死亡,警方通過查閱死者的電腦和手機函喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門避归,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人函似,你說我怎么就攤上這事槐脏。” “怎么了撇寞?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵顿天,是天一觀的道長。 經(jīng)常有香客問我蔑担,道長牌废,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任啤握,我火速辦了婚禮鸟缕,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己懂从,他們只是感情好授段,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著番甩,像睡著了一般侵贵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缘薛,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天窍育,我揣著相機與錄音,去河邊找鬼宴胧。 笑死漱抓,一個胖子當著我的面吹牛,可吹牛的內容都是我干的恕齐。 我是一名探鬼主播乞娄,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼檐迟!你這毒婦竟也來了补胚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤追迟,失蹤者是張志新(化名)和其女友劉穎溶其,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敦间,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瓶逃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廓块。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢绝。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖带猴,靈堂內的尸體忽然破棺而出昔汉,到底是詐尸還是另有隱情,我是刑警寧澤拴清,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布靶病,位于F島的核電站,受9級特大地震影響口予,放射性物質發(fā)生泄漏娄周。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一沪停、第九天 我趴在偏房一處隱蔽的房頂上張望煤辨。 院中可真熱鬧裳涛,春花似錦、人聲如沸众辨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泻轰。三九已至技肩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浮声,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工旋奢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泳挥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓至朗,卻偏偏與公主長得像屉符,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锹引,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容