Comment recevoir blob réponses à l'aide Angulaire 2+ @angulaire/http module?

Je suis en train de fournir un fichier pdf à télécharger à partir angulaire à 2 app...

ce code fonctionne:

    var reportPost = 'variable=lsdkjf';

    var xhr = new XMLHttpRequest();

    xhr.open("POST", "http://localhost/a2/pdf.php", true);
    xhr.responseType = 'blob';
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    xhr.onreadystatechange = function() {//Call a function when the state changes.
        if(xhr.readyState == 4 && xhr.status == 200) {
            var blob = new Blob([this.response], {type: 'application/pdf'});
            saveAs(blob, "Report.pdf");
        }
    }

    xhr.send(reportPost);

mais j'aurais bien aimé utiliser angulaire 2 Http intégré dans le client.

un peu de recherche:

et des tests de code:

    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

    this.http.post('http://localhost/a2/pdf.php', reportPost,  {
        headers: headers
        })
        .retry(3)
        //.map( (res:any) => res.blob() ) //errors out
        .subscribe(
          (dataReceived:any) => {
            var blob = new Blob([dataReceived._body], {type: 'application/pdf'});
            saveAs(blob, "Report.pdf");
          },
          (err:any) => this.logError(err),
          () => console.log('Complete')
        );

ps. le saveAs fonction vient d'ici: https://github.com/eligrey/FileSaver.js

  • Semble que le blob()-méthode n'est pas encore mis en œuvre. Voir github.com/angular/angular/blob/master/modules/angular2/src/.... Un problème de suivi de l'état de mise en œuvre peut être trouvé ici: github.com/angular/angular/issues/2803
  • Comment avez-vous "enregistrer sous" au travail? J'ai installé le module, installé le typings, et toujours avoir "pas une telle fonction: saveAs" quand je le lance.. tellement ennuyeux... comment voulez-vous inclure dans le fichier d'enregistrement de code? (j'utilise webpack, je n'ai toujours pas compris)
  • j'ai juste été en ignorant l'erreur de la TS compilateur. - il encore de la compile... bâclée hein?
InformationsquelleAutor ryanrain | 2015-12-08