Maison > interface Web > js tutoriel > le corps du texte

Comment télécharger un fichier PDF à partir d'une chaîne binaire renvoyée par un service Web à l'aide de JavaScript ?

Mary-Kate Olsen
Libérer: 2024-10-29 05:40:02
original
579 Les gens l'ont consulté

How to Download a PDF File from a Binary String Returned by a Web Service Using JavaScript?

Comment créer un fichier PDF à partir d'une chaîne binaire renvoyée par un service Web à l'aide de JavaScript

Des rencontres surviennent lors de la tentative de rendu d'un fichier PDF à partir de une chaîne binaire reçue via une requête Ajax. Les navigateurs Web, à savoir Firefox et Internet Explorer 9, posent des défis lors de l'utilisation de la solution data:uri.

Problème

La chaîne binaire reçue ressemble à la suivante :

%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
Copier après la connexion

Tentative de solution

L'intégration des données via data:uri s'avère efficace dans Opera et Chrome mais échoue dans Firefox et Internet Explorer.

Solution potentielle

Envisagez de créer le fichier PDF sur le système de fichiers pour permettre le téléchargement par l'utilisateur. Cette méthode nécessite une solution côté client et une compatibilité avec les principaux navigateurs.

Solution révisée

Modifiez le type de réponse XMLHttpRequest en "blob". Ensuite, remplacez la fonction window.open par un attribut de téléchargement sur un élément . Ce processus lance le téléchargement de la réponse XMLHttpRequest sous forme de fichier ".pdf".

<code class="javascript">var request = new XMLHttpRequest();
request.open("GET", "/path/to/pdf", true); 
request.responseType = "blob";
request.onload = function (e) {
    if (this.status === 200) {
        // `blob` response
        console.log(this.response);
        // create `objectURL` of `this.response` : `.pdf` as `Blob`
        var file = window.URL.createObjectURL(this.response);
        var a = document.createElement("a");
        a.href = file;
        a.download = this.response.name || "detailPDF";
        document.body.appendChild(a);
        a.click();
        // remove `a` following `Save As` dialog, 
        // `window` regains `focus`
        window.onfocus = function () {                     
          document.body.removeChild(a)
        }
    };
};
request.send();</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal