Javascript 将JSZip对象转换为ArrayBuffer的最佳方式是什么?
我的应用程序使用JSZip将用户提交的文件压缩为zip文件。然后,我想使用传单.shapefile插件在我的应用程序上显示zip文件 但是,构造函数只接受ArrayBuffer。我查看了JSZip的文档,虽然支持ArrayBuffers,但找不到任何将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();
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)