Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSZip对象转换为ArrayBuffer的最佳方式是什么?_Javascript_Arraybuffer_Jszip - Fatal编程技术网

Javascript 将JSZip对象转换为ArrayBuffer的最佳方式是什么?

Javascript 将JSZip对象转换为ArrayBuffer的最佳方式是什么?,javascript,arraybuffer,jszip,Javascript,Arraybuffer,Jszip,我的应用程序使用JSZip将用户提交的文件压缩为zip文件。然后,我想使用传单.shapefile插件在我的应用程序上显示zip文件 但是,构造函数只接受ArrayBuffer。我查看了JSZip的文档,虽然支持ArrayBuffers,但找不到任何将JSZip对象转换为ArrayBuffer的显式方法 function CreateZipFile(Files) { Response.type = "ArrayBuffer"; let zip = new JSZip();

我的应用程序使用JSZip将用户提交的文件压缩为zip文件。然后,我想使用传单.shapefile插件在我的应用程序上显示zip文件

但是,构造函数只接受ArrayBuffer。我查看了JSZip的文档,虽然支持ArrayBuffers,但找不到任何将JSZip对象转换为ArrayBuffer的显式方法

function CreateZipFile(Files)
{
    Response.type = "ArrayBuffer";
    let zip = new JSZip();

    for (let i = 0; i < Object.keys(Files).length; i++)
    {
        if (!CheckShapeExtensions(Files[i].name))
        {
            continue;
        }
        zip.file(Files[i].name, Files[i]);
    }

    zip.generateAsync({
        type: 'blob',
        compression: "DEFLATE",
        compressionOptions: {
            level: 9
        },
        name: zipfileName + ".zip"
    });

    return zip;
}

如何将JSZip文件转换为ArrayBuffer?如果不是,我是否应该将zip文件作为数组缓冲区而不是JSZip对象写入?

函数CheckShapeExtensions(文件){
返回真值
}
函数CreateZipFile(文件){
const-zip=new-JSZip()
Array.from(文件)
.filter(CheckShapeExtensions)
.forEach(文件=>{
zip.file(file.name,file)
})
//generateAsync返回一个承诺,
//意味着它是异步的
返回zip.generateAsync({
类型:“arrayBuffer”,//从blob更改为arrayBuffer
压缩:“放气”,
压缩选项:{
级别:9
}
})
}
//模拟从文件输入中获得的文件
//const files=input.files
常量文件={0:新文件(['abc'],'abc.txt'),长度:1}
CreateZipFile(文件)。然后(arrayBuffer=>{
console.log(arrayBuffer.toString())
})
函数CheckShapeExtensions(文件){
返回真值
}
函数CreateZipFile(文件){
const-zip=new-JSZip()
Array.from(文件)
.filter(CheckShapeExtensions)
.forEach(文件=>{
zip.file(file.name,file)
})
//generateAsync返回一个承诺,
//意味着它是异步的
返回zip.generateAsync({
类型:“arrayBuffer”,//从blob更改为arrayBuffer
压缩:“放气”,
压缩选项:{
级别:9
}
})
}
//模拟从文件输入中获得的文件
//const files=input.files
常量文件={0:新文件(['abc'],'abc.txt'),长度:1}
CreateZipFile(文件)。然后(arrayBuffer=>{
console.log(arrayBuffer.toString())
})

类型:“blob”
更改为
类型:“arrayBuffer”
?您好,无止境,尝试一下。它不起作用。返回的zip文件仍然是JSZip对象,而不是ArrayBuffer。您的错误表明,无论您调用的是
isArrayBuffer
on,它都是
未定义的。这意味着您的问题出现在loaple.shpfile.js的第13行,尚未以您的数据公开的格式出现。GenerateAsync返回一个新blob/arraybuffer的承诺,但您忽略了结果更改
类型:“blob”
类型:“arraybuffer”
?您好@无止境,尝试一下。它不起作用。返回的zip文件仍然是JSZip对象,而不是ArrayBuffer。您的错误表明,无论您调用的是
isArrayBuffer
on,它都是
未定义的。这意味着您的问题出现在loaple.shpfile.js的第13行,尚未以您的数据公开的格式出现。GenerateAsync使用新的blob/arraybuffer返回承诺,但您忽略了结果
leaflet.shpfile.js:13 Uncaught TypeError: Cannot read property 'isArrayBuffer' of undefined
    at NewClass.initialize (leaflet.shpfile.js:13)
    at new NewClass (Class.js:22)
    at Object.L.shapefile (leaflet.shpfile.js:62)
    at filescan (Account_2.js:115)
    at HTMLInputElement.onchange (Account:156)