Что работает, так это то, что я использую http-запрос для отображения моего файла как arrayBuffer
& Typeof: object
.
Обычно я получаю данные в виде двоичных файлов, у меня нет опыта работы с двоичными файлами или файлами .
Я использую библиотеку: https://github.com/bkonetzny/pkpass-html-viewer Точку, в которую я загружаю ее, я пропускаю и передаю с помощью функции:
$("#file").on("change", function(evt) {
var files = evt.target.files;
for (var i = 0, f; f = files[i]; i++) {
console.log(f)
JSZip.loadAsync(f)
.then(function(zip) {
var $pass = $('#pass');
$pass.find('dl, img').remove();
$pass.find('.side.front, .primaryFields').css('background-image', 'none');
var $files = $('#files');
$files.html('');
$.each(zip.files, function(index, zipEntry) {
$files.append($('<li>', {text: zipEntry.name}));
Я должен ее изменить до:
JSZipUtils.getBinaryContent(evt, function(err, zip) {
if (err) {
throw err; // or handle err
}
console.log(zip);
JSZip.loadAsync(zip).then(function() {
var $pass = $('#pass');
$pass.find('dl, img').remove();
$pass.find('.side.front, .primaryFields').css('background-image', 'none');
var $files = $('#files');
$files.html('');
buffer = zip
zip = new Uint8Array(zip);
zip = new Blob([new Uint8Array(zip, zip.byteOffset, zip.length)]);
// buffer = zip
var reader = new FileReader();
reader.addEventListener("loadend", function() {
});
reader.readAsArrayBuffer(zip);
$.each(zip, function(index, zipEntry) {
$files.append($('<li>', {
text: zipEntry.name
}));