P.D*_*dle 12 javascript filereader jszip
我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)
删除所有不必要的代码后,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 );
Run Code Online (Sandbox Code Playgroud)
第一个警报显示[object FileReader],第二个警告显示TypeError,archive.file(...)为null.
我已经使用FileReader的readAsText方法使用相同的代码成功打开文本文件,因此如果出现错误,则使用readAsArrayBuffer(JSZip文档建议)或者我使用它的方式.我发现的几乎所有关于JSZip的资源都使用带有构造函数参数的旧方法而不是loadAsync,所以我可能没有正确使用它.
小智 6
您可以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")});
};Run Code Online (Sandbox Code Playgroud)
<script src="https://raw.githubusercontent.com/Stuk/jszip/master/dist/jszip.min.js">
</script>
<input type=file id=f>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9302 次 |
| 最近记录: |