javascript - Convertir un Blob en Fichier et prévisualiser dans le navigateur (sans télécharger)
Je reçois un contenu Blob à partir d'un appel à un service web et le besoin est d'afficher le fichier dans le navigateur.
Ce que j'ai :
- Fichier blob (fileBlob)
Le paramètre blob ci-dessus, je le reçois comme réponse et je renvoie le même au méthode javascript dans le « callback ». J'essaie de convertir le blob en le format de fichier respectif et de l'afficher dans le navigateur (je ne veux pas le télécharger à moins que l'utilisateur final ne le souhaite).
J'ai essayé ci-dessous :
var callback1 = {
onSuccess: function(e){ //e is the blob content I am receiving
alert('Receiving file from SF:---> ' + e);
var file = new File([e], "uploaded_file.pdf", { type: "application/pdf", lastModified: Date.now() });
//document.body.append(file);
//var blob=new Blob([e], {type:"application/pdf"});
var link=document.createElement('a');
//link.href=window.URL.createObjectURL(e);
link.download=file;
link.click();
}, onFailure: function(error){
alert(error);
}
};
Mise à jour
Mise à jour 2 (après avoir traité la réponse comme base64)
Réponse #1
Utilisez iframe pour afficher un fichier PDF, la fonction ressemblerait à ceci avec une réponse blob et un nom de fichier.
function openPDF(resData, fileName) {
var ieEDGE = navigator.userAgent.match(/Edge/g);
var ie = navigator.userAgent.match(/.NET/g); // IE 11+
var oldIE = navigator.userAgent.match(/MSIE/g);
var bytes = new Uint8Array(resData); //use this if data is raw bytes else directly pass resData
var blob = new window.Blob([bytes], { type: 'application/pdf' });
if (ie || oldIE || ieEDGE) {
window.navigator.msSaveBlob(blob, fileName);
}
else {
var fileURL = URL.createObjectURL(blob);
var win = window.open();
win.document.write('<iframe src="' + fileURL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>')
}
}

