Lokale ZIP-Datei in HTML5/Javascript mit JSZip lesen
English
Deutsch
In unserem vorherigen Beitrag Lokale Datei in Javascript mit HTML5 FileReader laden haben wir gezeigt, wie eine lokale Datei mit dem HTML5 FileReader gelesen wird.
Darauf aufbauend ist es recht einfach, JSZip zum Lesen einer lokalen ZIP-Datei zu verwenden:
read_local_zip.js
var reader = new FileReader();
reader.onload = function(ev) {
JSZip.loadAsync(ev.target.result).then(function(zip) {
// TODO Your code goes here. This is just an example.
console.log(zip)
}).catch(function(err) {
console.error("Failed to open", filename, " as ZIP file:", err);
})
};
reader.onerror = function(err) {
console.error("Failed to read file", err);
}
reader.readAsArrayBuffer(fileInput.files[0]);Ein Beispiel, was mit dem JSZip-Objekt gemacht werden kann, ist das Auflisten der Dateinamen in der ZIP-Datei:
list_zip_filenames.js
var filename = fileInput.files[0].name;
var reader = new FileReader();
reader.onload = function(ev) {
JSZip.loadAsync(ev.target.result).then(function(zip) {
for(let [filename, file] of Object.entries(zip.files)) {
console.log(filename);
}
}).catch(function(err) {
console.error("Failed to open", filename, " as ZIP file:", err);
})
};
reader.onerror = function(err) {
console.error("Failed to read file", err);
}
reader.readAsArrayBuffer(fileInput.files[0]);Vollständiges Beispiel
read_local_zip_example.html
<html>
<body>
<input type="file" id="myfile" onchange="onMyfileChange(this)" />
<script src="https://unpkg.com/[email protected]/dist/jszip.js" type="text/javascript"></script>
<script type="text/javascript">
function onMyfileChange(fileInput) {
if(fileInput.files[0] == undefined) {
return ;
}
var filename = fileInput.files[0].name;
// var filesize = fileInput.files[0].size;
var reader = new FileReader();
reader.onload = function(ev) {
JSZip.loadAsync(ev.target.result).then(function(zip) {
console.log(zip)
}).catch(function(err) {
console.error("Failed to open", filename, " as ZIP file");
})
};
reader.onerror = function(err) {
console.error("Failed to read file", err);
}
reader.readAsArrayBuffer(fileInput.files[0]);
}
</script>
</body>
</html>Check out similar posts by category:
HTML, Javascript
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow