it-swarm.com.de

Wie kann ich binäre Daten der Zip-Datei in Javascript speichern?

Ich bekomme weniger Antwort von AJAX bzw.:

dies ist die Antwort der ZIP-Datei. Bitte geben Sie mir an, wie Sie diesen Dateinamen in JavaScript speichern können. In der Zip befindet sich die Datei PDF.

Mein Code ist wie folgt: 

$.ajax({

    url: baseURLDownload + "/service/report-builder/generateReportContentPDF",
    beforeSend: function (xhr) {
        xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
        xhr.responseType = 'arraybuffer'
    },
    type: "POST",
    data: JSON.stringify(parameter),
    contentType: "application/json",
    success: function(result) {
        console.log("ssss->"+result);
        var base64String = utf8_to_b64(result);
        //window.open("data:application/Zip;base64,"+base64String); // It will download pdf in Zip
        var Zip = new JSZip();
        Zip.add("PDFReport.pdf", result);
        content = Zip.generate();
        location.href="data:application/Zip;base64," + content;
        $.mobile.loading('hide');

    },
    error: function(xhr){
        console.log("Request Status: " + xhr.status + " Status Text: " + xhr.statusText + " " + xhr.responseText);
        $.mobile.loading('hide');
        showAlert("Error occured. Unable to download Report", "Message", "OK");

    }
});

RESPOSE Console.log ("ssss ->" + Ergebnis);

PK Q F /crt_pdf_10204725.pdf uX\M 8 | p ; w @ p ܝ Bp |; | C ھ w = O ]] % N # + reup Y ̉ J 3) O C F M P & rA @ 7T. z (% h x x0 0Z -i % q e M i " c -/ j 齔/ļL 瞄 0 > o [ ��6 멆�n��s�$� �#>˘ '��wT�� ���3�36DK�+�̓�t6 ��r��sA:���x�<>n������'U��RLqA+���ݺ�BM��:4ĞP�}���:�}ߣP����?F)�9-�W0���2�{x��#2v8N.$V�>X=/�+�c}���ּ�\y���\*�J\�� ���90�T�L� 3p���*Sfj(���PWWz��O�s�9]&� iO | 9 ; 5 ʘdW cl% $%; Lu _% [ 5 Q] $ [L > yXg 9 2 + &, iFs Q u ???? . E ( > W + M؟ E i | ���k�k�c蟴CcG�j��4s|x �F1 } Y , 29 0M = -O m\L y ^ On ^ \ u a F9: zc Sy - g fu n C T: { 4 &/ LM9 98 & Pnc ! m r ~ ) 74 04 0 0 M ~ " .ikjG M -

14
Nishant Singh

Endlich bekam ich die Antwort auf meine Frage:

Hier ist der Code:

var xhr = new XMLHttpRequest();
xhr.open("POST", baseURLDownload + "/service/report/QCPReport", true);
xhr.setRequestHeader("Content-type","application/json");
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        // alert("Failed to download:" + xhr.status + "---" + xhr.statusText);
        var blob = new Blob([xhr.response], {type: "octet/stream"});
        var fileName = "QCPReport.Zip";
        saveAs(blob, fileName);
    }
}
xhr.responseType = "arraybuffer";
xhr.send(JSON.stringify(QCPParameter));
18
Nishant Singh

Keine abhängigkeit.

Kompatibel mit IE 10,11, Chrome, FF und Safari:

function str2bytes (str) {
   var bytes = new Uint8Array(str.length);
   for (var i=0; i<str.length; i++) {
      bytes[i] = str.charCodeAt(i);
    }
    return bytes;
}

var xhr = new XMLHttpRequest();
xhr.open("POST", baseURLDownload + "/service/report/QCPReport", true);
xhr.setRequestHeader("Content-type","application/json");
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        // alert("Failed to download:" + xhr.status + "---" + xhr.statusText);
        var blob = new Blob([str2bytes(xhr.response)], {type: "application/Zip"});
        var fileName = "QCPReport.Zip";
        if (navigator.msSaveOrOpenBlob) {
            navigator.msSaveOrOpenBlob(blob, filename);
        } else {
            var a = document.createElement("a");
            document.body.appendChild(a);
            a.style = "display:none";
            var url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = filename;
            a.click();
            window.URL.revokeObjectURL(url);
            a.remove();
        }
    }
}
xhr.responseType = "arraybuffer";
xhr.send(JSON.stringify(QCPParameter));
3
Below the Radar

Für diejenigen, die Abruf verwenden, können Sie dies tun, indem Sie Folgendes tun.

fetch(url, config).
  .then((response) => {
    return response.arrayBuffer()
  })
  .then((data) => handleData(data))

In handleData instanziieren Sie dann das Blob-Objekt, um die Zip-Daten zu verarbeiten. 

0
IonicBurger

Es gibt Bibliotheken (Zip.js), die sich mit dieser Art von Dingen beschäftigen, vorausgesetzt, Sie möchten wissen, was sich in der Zip-Datei befindet. Wenn Sie die ZIP-Datei nur speichern möchten, behandeln Sie sie wie jede andere Datei.

0
Scott Hunter

Axios-Implementierung:

const url = 'https://www.example.com/download-Zip'

// Payload, eg list of docs to Zip
const payload = { documents: ['id1', 'id2', 'id3'] }

// Axios options
const axiosOptions = {
  responseType: 'arraybuffer',
  headers: {
    'Content-Type': 'application/json'
  }
}

// Fetch data and save file
axios
  .post(url, payload, axiosOptions)
  .then((response) => {
    const blob = new Blob([response.data], {
      type: 'application/octet-stream'
    })
    const filename = 'download.Zip'
    saveAs(blob, filename)
  })
  .catch((e) => {
    // Handle error
  })
})

0
bruddha