Je reçois une réponse en dessous de AJAX réponse:
ceci est la réponse du fichier Zip . s'il vous plaît laissez-moi savoir comment enregistrer ce nom de fichier.Zip en Javascript. Le fichier PDF se trouve dans le fichier Zip.
Mon code est comme ça:
$.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 ->" + résultat);
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% %; u % [ 5 Q] $ [L> yXg 9 2 + &, iFs Q u ???? . E (> W + M؟ Ei | ���k�k�c蟴CcG�j��4s|x �F
1 } Y , 29 0M = -O m\L y ^ le ^ \ u a F9: zc Sy - g fu n C T: { 4 &/ LM9 98 & Pnc ! m r ~ ) 74 04 0 0 M ~ " .ikjG M -
Enfin, j'ai eu la réponse à ma question:
Voici le 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));
Pas de dépendance.
Compatible avec IE 10,11, Chrome, FF et 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));
Pour ceux d'entre vous qui utilisent fetch, vous pouvez le faire en faisant quelque chose comme ceci.
fetch(url, config).
.then((response) => {
return response.arrayBuffer()
})
.then((data) => handleData(data))
Dans handleData, vous allez ensuite instancier l'objet Blob pour gérer les données Zip.
Il existe des bibliothèques (Zip.js me vient à l’esprit) pour gérer ce genre de choses, en supposant que vous souhaitiez obtenir ce que contient le fichier Zip. Si vous souhaitez simplement enregistrer le fichier Zip, vous le traiterez comme tout autre fichier.