pythonshell压缩文件_jsZip解压本地zip并展示文件

代码实现

安装jsZip

cnpm install jsZip

zipDemo.vue

Reading a local file

解压本地zip

本地路径(ie): 解压

:src="item"

>

import JSZip from 'jszip'

import { pathToDataURL,dataURLtoFile,arrayBufferToBase64} from '../../../utils/activexobj'

export default {

name: 'demo',

data() {

return {

results:[],

localPath:['C:\\Users\\cjq\\Desktop\\images.zip']

}

},

methods:{

// ie

handleIeZips(){

this.results=[];

this.localPath.forEach(v =>{

var dataUrl =pathToDataURL(v);

var blob =dataURLtoFile(dataUrl);

this.handleFile(blob);

})

},

handleFile(blob){

var zip = new JSZip();

zip.loadAsync(blob)

.then((file) => {

var files=file.files;

for (let f in files) {

zip.file(f).async("arraybuffer").then((buffer) => {

var base64 = arrayBufferToBase64(buffer,f);

try{

this.results.push(base64);

}catch(e){

console.log(e);

}

});

}

}, function (e) {

alert("Error reading : " + e.message);

});

},

},

};

input[type='text']{

height: 28px;

width: 300px;

}

#result{

margin-top:30px;

}

#result .el-image{

height: 200px;

}

activexobj.js

//本地路径转base64

export function pathToDataURL(file) {

try{

var type=file.slice(file.lastIndexOf(".")+1)

var xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.6.0');

xmlHttp.open('POST',file, false);

xmlHttp.send('');

var xml_dom = new ActiveXObject('MSXML2.DOMDocument');

var tmpNode = xml_dom.createElement('tmpNode');

tmpNode.dataType = 'bin.base64';

tmpNode.nodeTypedValue = xmlHttp.responseBody;

var fileBase="";

switch (type) {

case "pdf":fileBase="data:application/pdf;base64,";break;

case "jpg":fileBase="data:image/jpg;base64,";break;

case "png":fileBase="data:image/png;base64,";break;

case "bmp":fileBase="data:image/bmp;base64,";break;

case "zip":fileBase="data:application/x-zip-compressed;base64,";break;

}

var imgBase64Data = fileBase+tmpNode.text.replace(/\n/g,"");

return imgBase64Data;

}catch (e) {

console.log(e);

}

}

//base64转File(IE)

export function dataURLtoFile(dataurl,fileName){

var arr = dataurl.split(','),

mime = arr[0].match(/:(.*?);/)[1],

bstr = atob(arr[1]),

n = bstr.length,

u8arr = new Uint8Array(n);

while (n--) {

u8arr[n] = bstr.charCodeAt(n);

}

var theBlob=new Blob([u8arr], { type: mime });

theBlob["lastModifiedDate"] = new Date();

theBlob["name"] = fileName;

return theBlob;

}

// arrayBuffer转base64

export function arrayBufferToBase64( buffer,fileName ) {

var type=fileName.slice(fileName.lastIndexOf(".")+1)

var fileBase="";

switch (type) {

case "pdf":fileBase="data:application/pdf;base64,";break;

case "jpg":fileBase="data:image/jpg;base64,";break;

case "png":fileBase="data:image/png;base64,";break;

case "bmp":fileBase="data:image/bmp;base64,";break;

case "zip":fileBase="data:application/x-zip-compressed;base64,";break;

}

var binary = '';

var bytes = new Uint8Array(buffer);

var len = bytes.byteLength;

for (var i = 0; i < len; i++) {

binary += String.fromCharCode(bytes[i]);

}

return fileBase+window.btoa(binary);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值