国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端實(shí)現(xiàn)批量導(dǎo)出圖片并打包壓縮功能

gghyoo / 2866人閱讀

摘要:需求管理后臺(tái)需要批量導(dǎo)出二維碼圖片實(shí)現(xiàn)難點(diǎn)選擇相應(yīng)的圖片批量導(dǎo)出或直接批量導(dǎo)出并壓縮在一個(gè)文件夾里思路分析先將選中二維碼的地址存在一個(gè)數(shù)組中依次請(qǐng)求圖片并將其下載后用壓縮文件最后用生成文件實(shí)現(xiàn)實(shí)現(xiàn)的代碼如下批量下載下載文件并存成對(duì)象獲

需求

管理后臺(tái)需要批量導(dǎo)出二維碼圖片

實(shí)現(xiàn)難點(diǎn)

選擇相應(yīng)的圖片批量導(dǎo)出或直接批量導(dǎo)出并壓縮在一個(gè)文件夾里

思路分析

1.先將選中二維碼的地址存在一個(gè)數(shù)組中
2.依次請(qǐng)求圖片并將其下載
3.后用jszip壓縮文件
4.最后用file-saver生成文件

實(shí)現(xiàn)

實(shí)現(xiàn)的代碼如下

import axios from "axios"
import JSZip from "jszip"
import FileSaver from "file-saver"
getFile = (url) => {
      return new Promise((resolve, reject) => {
        axios({
          method: "get",
          url,
          responseType: "arraybuffer"
        }).then(data => {
          resolve(data.data)
        }).catch(error => {
          reject(error.toString())
        })
      })
    };
}
// 批量下載
handleBatchDownload = async(selectImgList) => {
      const data = selectImgList;
      const zip = new JSZip()
      const cache = {}
      const promises = []
      await data.forEach(item => {
          const promise = this.getFile(item).then(data => { // 下載文件, 并存成ArrayBuffer對(duì)象
          const arr_name = item.split("/");
          let file_name = arr_name[arr_name.length - 1] // 獲取文件名
          // if (file_name.indexOf(".png") == -1) {
         //    file_name = file_name + ".png"
         // }
          zip.file(file_name, data, {
            binary: true
          }) // 逐個(gè)添加文件
          cache[file_name] = data
        })
        promises.push(promise)
      })
      Promise.all(promises).then(() => {
        zip.generateAsync({
          type: "blob"
        }).then(content => { // 生成二進(jìn)制流
          FileSaver.saveAs(content, "photo.zip") // 利用file-saver保存文件
        })
      })
    
};
    
知識(shí)點(diǎn)總結(jié)

1.插件file-saver的使用

a標(biāo)簽download屬性下載不了跨域圖片直接在瀏覽器預(yù)覽,利用file-saver將跨域訪問的圖片下載

可以file-saver下載其他文件,詳情可去參考其API

如果你需要保存較大的文件,不受 blob 的大小限制或內(nèi)存限制,可以看一下更高級(jí)的 StreamSaver.js

2.插件jszip的使用

點(diǎn)擊批量下載所有圖片都在瀏覽器下載文件多表現(xiàn)不友好,需將批量下載的圖片打包進(jìn)壓縮包里,故引進(jìn)了JSZip進(jìn)行打包

JSZip是一個(gè)用于創(chuàng)建,閱讀和編輯.zip文件的JavaScript庫,具有友好而簡(jiǎn)單的API,詳細(xì)用法可以參照其API

備注 :

注意的是responseType, 如果下載文件是文本類型的(如: .txt, .js之類的),那么用responseType: "text"也可以, 但是如果下載的文件是圖片, 視頻之類的, 就得用arraybuffer

如果下載的文件過大, 打包的時(shí)間將會(huì)很長(zhǎng), 甚至可能會(huì)導(dǎo)致瀏覽器奔潰

還需要注意的一點(diǎn)是請(qǐng)求圖片資源時(shí)因其是異步請(qǐng)求,需要等所有圖片請(qǐng)求完再進(jìn)行打包這一步,在請(qǐng)求資源時(shí)需要await

參考文檔

file-saver地址
JSZip參考文檔地址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101949.html

相關(guān)文章

  • 前端構(gòu)建工具整理

    摘要:常見前端構(gòu)建工具的分類和對(duì)比是附帶的包管理器,是內(nèi)置的一個(gè)功能,允許在文件里面使用字段定義任務(wù)在這里,一個(gè)屬性對(duì)應(yīng)一段腳本,原理是通過調(diào)用去運(yùn)行腳本命令。 前文 端技術(shù)范圍不斷發(fā)展,前端開發(fā)不僅限于直接編寫html,css和javascript,Web應(yīng)用日益龐大,代碼也更加龐大,因此許多新的思想(例如模塊化和工程化等)和框架(React和Vue等),以及新的語言(Es6 TypeSc...

    leo108 評(píng)論0 收藏0
  • gulp入門

    摘要:通過輸入文件流,將文件寫入硬盤,并輸出所有數(shù)據(jù),能繼續(xù)向下游,所以文件流可以繼續(xù)被處理并被寫入到其他地方。如果寫入文件夾不存在,就會(huì)創(chuàng)建它。第二個(gè)參數(shù),當(dāng)前任務(wù)依賴的任務(wù)列表,依賴任務(wù)在當(dāng)前任務(wù)運(yùn)行之前完成。 gulp 簡(jiǎn)介 用自動(dòng)化構(gòu)建工具增強(qiáng)你的工作流程。 通過代碼優(yōu)于配置的策略,Gulp 讓簡(jiǎn)單的任務(wù)簡(jiǎn)單,復(fù)雜的任務(wù)可管理。 利用 Node.js 流的威力,你可以快速構(gòu)建項(xiàng)目并...

    kycool 評(píng)論0 收藏0
  • 聊聊webpack

    摘要:但是由于缺乏規(guī)范化管理,出現(xiàn)了很多種模塊化規(guī)范,從針對(duì)的規(guī)范,到針對(duì)瀏覽器端的,終于在里規(guī)范了前端模塊化??梢酝ㄟ^兩種方式之一終端或。導(dǎo)出多個(gè)配置對(duì)象運(yùn)行時(shí),所有的配置對(duì)象都會(huì)構(gòu)建。在階段又會(huì)發(fā)生很多小事件。 隨著前端的迅速發(fā)展,web項(xiàng)目復(fù)雜度也是越來越高。為了便捷開發(fā)和利于優(yōu)化,將一個(gè)復(fù)雜項(xiàng)目拆分成一個(gè)個(gè)小的模塊,于是模塊化開發(fā)出現(xiàn)了。但是由于缺乏規(guī)范化管理,出現(xiàn)了很多種模塊化規(guī)范...

    Ashin 評(píng)論0 收藏0
  • 關(guān)于前端實(shí)現(xiàn)文件下載功能

    摘要:?jiǎn)栴}以上兩種方式,當(dāng)在下載格式,或者視頻文件時(shí),瀏覽器會(huì)直接播放該文件,而達(dá)不到直接下載的功能,此時(shí),當(dāng)下載音視頻文件時(shí)無法使用以上兩種方式。 1、通過window.open()打開新頁面下載文件 window.open(`url`, _self) 使用場(chǎng)景:下載excel文件,后端提供接口,接口返回的是文件流,可以直接使用window.open(),最簡(jiǎn)單的方式。 優(yōu)點(diǎn):最簡(jiǎn)潔; 弊...

    Arno 評(píng)論0 收藏0
  • 【長(zhǎng)期更新】盤一盤那些 uTools 高質(zhì)量插件,讓你的工作效率瞬間提升N倍!

    摘要:參考增強(qiáng)神器,文檔搜索效率何止翻倍推薦系數(shù)圖片展示快速獲取文件文件夾名稱插件來源開發(fā)者插件介紹如名,鼠標(biāo)選中文件或者文件夾,點(diǎn)擊鼠標(biāo)中鍵激活插件即可將文件文件夾名稱復(fù)制到剪切板。 ...

    remcarpediem 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

gghyoo

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<