最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項目使用jszip和file-saver批量打包壓縮圖片或附件方式

 更新時間:2024年03月08日 09:47:33   作者:小破孩呦  
這篇文章主要介紹了vue項目使用jszip和file-saver批量打包壓縮圖片或附件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

使用jszip和file-saver批量打包壓縮圖片或附件

背景:

圖片上傳功能用戶會批量上傳好多個,并且圖片可能還會很大,于是就采用了前端先壓縮,然后將壓縮包直接傳給后端。

1、安裝插件:

npm install jszip
npm install file-saver

2、在頁面中引入插件:

import JSZip from 'jszip';
import FileSaver from 'file-saver'; 
// 定義全局的 zip
const zip = new JSZip();

注釋:在引入組件的位置定義一個全局的 zip 用于文件的壓縮

3、element UI 上傳組件:

<el-upload
    class="upload-demo"
    accept=".jpg,.JPG,.png,.PNG"
    action="#"
    :multiple="true"
    :auto-upload="false"
    :on-change="handleChange1"
    :show-file-list="false"
    :file-list="fileList1">
    <el-button size="small" type="primary">選擇文件</el-button>
</el-upload>
<el-button class="handle-upload" size="small" type="primary" @click="uploadData()" :loading="loadingFile1">開始上傳</el-button>

4、初始化 data 數(shù)據(jù):

export default {
    data() {
        return {
            fileList1: [], // 待上傳圖片數(shù)據(jù)
        }
    }
}

5、添加圖片選擇的 onchange 方法:

export default {
    methods: {
        // 上傳圖片
        handleChange1(file, fileList) {
            const that = this;
            const _file = file.raw;
            let blob = new Blob([_file], { type: _file.type});
            zip.file(_file.name, blob);
            this.fileList1 = fileList;
        },
        // 開始上傳
        uploadData(){
            // 生成 ZIP 文件
            zip.generateAsync({ type: 'blob' })
            .then(function (zipBlob) {
                // 在這里可以進行上傳操作,將 zipBlob 發(fā)送到服務(wù)器
                // 也可以通過 FileSaver.js 將 ZIP 文件保存到本地
                FileSaver.saveAs(zipBlob, '壓縮包名稱.zip');
             })
             .catch(function (error) {
                console.error('壓縮視頻失敗:', error);
             });
        }
    }
}

注釋:zip. 屬性是在第二步中進行定義的,具體請參考第二步

至此前端附件壓縮完成?。?!

附加:從服務(wù)器獲取附件,進行壓縮下載

1、安裝插件:

npm install jszip

2、在頁面中引入插件:

import JSZip from 'jszip';

3、第3 、4步同上

5、添加圖片選擇的 onchange 方法:

export default {
    methods: {
        // 圖片壓縮前轉(zhuǎn)換
        imgToBuffer(url) {
           return new Promise((resolve, reject) => {
             const xml = new XMLHttpRequest();
             xml.open('GET', url, true);
             xml.responseType = 'blob';
             xml.onload = function ({ currentTarget }) { //從事件對象結(jié)構(gòu)出currentTarget
               const { status, response } = currentTarget;
               status === 200 ? resolve(response) : reject(status); // response就是轉(zhuǎn)化后的
             };
             xml.send();
           });
        },
        // 開始壓縮
        uploadData(){
            const zip = new JSZip();
            const imgCache = {};
            const imgArr = [];
            let list = [
                    {name: '測試圖片1', url: 'https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF'},
                    {name: '測試圖片2', url: 'https://t7.baidu.com/it/u=727460147,2222092211&fm=193&f=GIF'},
                    {name: '測試圖片3', url: 'https://t7.baidu.com/it/u=3911840071,2534614245&fm=193&f=GIF'},
                    {name: '測試圖片4', url: 'https://t7.baidu.com/it/u=938052523,709452322&fm=193&f=GIF'},
             ];
             list.forEach((item) => { // urlList格式:[{url:圖片鏈接,name:圖片名稱}...]
                // 逐個添加文件
                const promise = this.imgToBuffer(item.url).then((res) => { 
                    zip.file(`${item.name}.${res.type.split('/').pop()}`, res, { binary: true }); 
                    imgCache[item.name] = res; // 下載文件, 并存成ArrayBuffer對象(blob)
                });
                imgArr.push(promise);
            });
            Promise.all(imgArr).then(() => {
                zip.generateAsync({ type: 'blob' }).then((content) => {
                    saveAs(content, '壓縮包名稱'); // 打包壓縮
                    this.$message.success('壓縮完成');
                }).catch((err) => {
                    this.$message.error(err.message);
                });
            });
        }
    }
}

至此完成壓縮下載?。。?/p>

總結(jié)

以上測試有效,感謝支持?。?!

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項目proxyTable配置小結(jié)

    vue項目proxyTable配置小結(jié)

    本文主要介紹了vue項目proxyTable配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • vue引入外部的js文件的10種方法總結(jié)

    vue引入外部的js文件的10種方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了vue項目中引入外部的js文件的10種方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的小伙伴可以參考下
    2023-08-08
  • Vue--Router動態(tài)路由的用法示例詳解

    Vue--Router動態(tài)路由的用法示例詳解

    這篇文章主要介紹了Vue--Router動態(tài)路由的用法,很多時候,我們需要將給定匹配模式的路由映射到同一個組件,在?Vue?Router?中,我們可以在路徑中使用一個動態(tài)字段來實現(xiàn),我們稱之為路徑參數(shù),本文對Vue?Router動態(tài)路由相關(guān)知識給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-08-08
  • 基于vue3+antDesign2+echarts?實現(xiàn)雷達(dá)圖效果

    基于vue3+antDesign2+echarts?實現(xiàn)雷達(dá)圖效果

    這篇文章主要介紹了基于vue3+antDesign2+echarts?實現(xiàn)雷達(dá)圖,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • mpvue全局引入sass文件的方法步驟

    mpvue全局引入sass文件的方法步驟

    這篇文章主要介紹了mpvue全局引入sass文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • element ui表格實現(xiàn)下拉篩選功能

    element ui表格實現(xiàn)下拉篩選功能

    這篇文章主要為大家詳細(xì)介紹了element ui表格實現(xiàn)下拉篩選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • mini-vue渲染的簡易實現(xiàn)

    mini-vue渲染的簡易實現(xiàn)

    本文主要介紹了mini-vue渲染的簡易實現(xiàn),主要簡單來實現(xiàn)一個虛擬dom渲染真實dom,以及更新的方法。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue本地打開build后生成的dist文件夾index.html問題

    vue本地打開build后生成的dist文件夾index.html問題

    這篇文章主要介紹了vue本地打開build后生成的dist文件夾index.html問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-09-09
  • 基于Vue2.X的路由和鉤子函數(shù)詳解

    基于Vue2.X的路由和鉤子函數(shù)詳解

    下面小編就為大家分享一篇基于Vue2.X的路由和鉤子函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue 解決IOS10低版本白屏的問題

    vue 解決IOS10低版本白屏的問題

    這篇文章主要介紹了vue 解決IOS10低版本白屏的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

绥宁县| 恭城| 高青县| 金溪县| 洛浦县| 南平市| 栾川县| 商河县| 高邮市| 大石桥市| 晴隆县| 仪陇县| 锡林郭勒盟| 远安县| 班戈县| 顺平县| 武川县| 丰城市| 东城区| 永年县| 磐石市| 米林县| 许昌市| 湖南省| 申扎县| 德安县| 清水河县| 玉门市| 永善县| 拉萨市| 大方县| 高要市| 夏邑县| 临泽县| 洮南市| 徐闻县| 汤阴县| 尼玛县| 故城县| 民丰县| 襄垣县|