- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 FileReader 和 JSZip.js 在浏览器中打开 zip 文件,然后处理其中包含的文件。我不知道如何正确地将 FileReader 对象传递给 JSZip。
这是我用来加载 javascript 的页面的精简版:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script type="text/javascript" src="zipscan.js"></script>
<script type="text/javascript" src="jszip.js"></script>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
</head>
<body>
<div id="openFile"><input type="file" id="inputFile" /></div>
</body>
</html>
删除所有不必要的代码后,zipscan.js 中的 javascript:
function checkFiles()
{
//Check support for the File API support
if ( window.File && window.FileReader && window.FileList && window.Blob )
{
var fileSelected = document.getElementById( "inputFile" );
fileSelected.addEventListener( "change", handleFile, false );
}
else
{
alert( "Files are not supported" );
}
}
function handleFile( evt )
{
//Set wanted file object
var fileToRead = evt.target.files[0];
//Create fileReader object
var fileReader = new FileReader();
fileReader.onload = function ( e )
{
//Create JSZip instance
var archive = new JSZip().loadAsync( e.target );
//Testing that it is loaded correctly
alert( e.target );
alert( archive.file( "hello.txt" ).name );
}
fileReader.readAsArrayBuffer( fileToRead );
}
window.addEventListener( "load", checkFiles, false );
第一个警告显示 [object FileReader],第二个警告导致 TypeError,archive.file(...) 为空。
我已经使用 FileReader 的 readAsText 方法和相同的代码成功打开文本文件,所以如果出现错误,要么是在使用 readAsArrayBuffer(JSZip 文档建议它)时,要么是在我使用它的方式中。我发现的关于 JSZip 的几乎所有资源都使用带有构造函数参数的旧方法而不是 loadAsync,所以可能是我没有正确使用它。
最佳答案
您可以直接传递 File
对象,而无需通过 FileReader
。 File
对象本身是一个(扩展的)Blob
,JSZip 可以将其作为 loadAsync()
的参数。
f.onchange = function() {
var zip = new JSZip();
zip.loadAsync( this.files[0] /* = file blob */)
.then(function(zip) {
// process ZIP file content here
alert("OK")
}, function() {alert("Not a valid zip file")});
};
<script src="https://raw.githubusercontent.com/Stuk/jszip/master/dist/jszip.min.js">
</script>
<input type=file id=f>
关于javascript - 使用 FileReader 和 JSZip.js 在浏览器中打开 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37876051/
我正在尝试使用 zip 文件“发布”和 xhr 请求,但我无法获得正确格式的 zip。我找到了一个显示类似请求的帖子: var zip = new JSZip(); // create the jsz
我正在使用 js-xlsx用于在 JavaScript 中创建 Excel 文件的库。 这个库使用jszip。我试图在加载 jszip 之前在我的 JavaScript 文件中定义 jszip 库,但
我在 Angular 7 应用程序中使用 jszip v3.2.1。当我构建我的项目时(例如,运行 npm start),我收到以下错误: ERROR in ./node_modules/jszip/
早上好,我正在使用 JSZip 创建 zip,我有以下代码: for (var i = 0, f; f = content[i]; i++) { var zip = new JSZip();
压缩包名称:testing.zip 当我提取文件时 测试\https_\s3-us-west-2.amazonaws.com\files\image.jpg 预期结构:testing/image.jp
有人可以解释一下,jszip 怎么可能不压缩文件?我正在尝试使用压缩,压缩后的 zip 文件大小大于内部未压缩文件的文件大小。我做错了什么吗? var fs = require("fs"); var
我有一个 Electron 应用程序,使用 jszip 创建一个 zip 文件,然后用户可以保存该文件。一切正常,但我的问题是我的应用程序使用用户下载文件夹。我猜它正在制作一个临时文件。我已将我的应用
是否可以使用 JSZip 在循环中创建真正的 zip 文件夹和文件,每个元素一个?如果是这样,怎么办? 类似这样的事情: var JSZip = require("jszip"); const sav
我的 Node.js 应用程序内存消耗很高,当一个接一个地加载 ~100MB zip 文件时,它会将它们作为“NodeBufferReader”保留在内存中。我正在使用的库称为 JSZip,可在此处找
我正在通过执行以下操作使用 JSZip 提取一个 zip 文件: jszip.loadAsync(zipFile) ['then'](function(zip) { return bluebi
我有一个奇怪的问题,typescript 找不到 jszip 的类型。 其他类型工作正常 类型似乎在正确的位置 在我的源文件中,我使用了这些导入,例如 import * as fast_csv fro
var zip = new JSZip(); zip.file("Hello.txt", "Hello World\n"); var img = zip.folder("images"); img.f
我使用 FileReader API 将输入文件的内容加载到浏览器内存中。这个 jsfiddle 包含一个工作示例: https://jsfiddle.net/qyh1s60d/ 我将结果转换为 Ui
我正在使用 JSZip 将一组图像捆绑在页面上并创建一个 zip 文件来存储它们。相关函数如下: // Make a zip file $("#snapLink").click(function()
我正在开发一个代码编辑器,我可以在其中检查我想要的库,只要说 Normalize或 FontAwesome ,来 self 服务器的 zip 文件被加载到 JSZip这样,当我导出我的代码时,我所有的
我想要压缩并下载一个文件夹。我似乎无法找出如何。 JSZip 似乎只能下载文件。 我不想使用 PHP。 最后一件事,我希望通过链接下载它,例如下载。 最佳答案 只要继续调用 zip.file() 即可
我已经编写了一个 zip 下载,但我面临的问题是我无法为 .zip 提供自定义文件名它不断给我一些随机名称,例如“ff22f3dc-24dc-” 41cb-b83d-06acef1694d0.zip”
我正在做一些网络应用程序的本地开发,需要从客户端的一些文件创建一个 zip 存档。我有一个非常简单的测试页面,带有按钮和下载链接。单击该按钮会使用 jszip library 生成一个 zip 文件。
我正在使用 HTML5 和移动版 jquery 开发离线应用程序。我想使用 jszip 从本地存储备份文件。下面是我所做的代码片段...... if (localStorageKeys.lengt
使用 JSZip , 有没有办法在压缩文件中编辑文件? 我已经尝试寻找解决方案并通过 API,但我似乎无法找到解决方案。 任何帮助都会很棒!提前致谢! 最佳答案 您可以使用 .file 方法编辑 zi
我是一名优秀的程序员,十分优秀!