Моя задача - отобразить .pkpass из базы данных. - PullRequest
0 голосов
/ 06 февраля 2020

Что работает, так это то, что я использую 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
          }));
...