2017-08-31 1 views
0

J'ai rencontré un problème avec le téléchargement d'un fichier avec angulaire. Lorsque vous utilisez Postman, le fichier s'affiche correctement dans le corps.angulaire 2/4 gérer res.download

J'utilise la fonction express res.download et je peux obtenir le fichier à télécharger mais ce n'est pas un png de travail qu'est-ce que je fais mal?

Mon angulaire 4 implimentation:

 this.http.post(localhost,{"jabcontent": cert._id}) 
     .subscribe(
      data => { 
       console.log(data.text()); 
       var blob = new Blob([data.text()], {type: "image/png"}); 
       FileSaver.saveAs(blob, "test.png"); 
       /* var blob = new Blob([data.text()], {type: "image/png"}); 
       var objectUrl = URL.createObjectURL(blob); 
       window.open(objectUrl); */ 
      } 
     ) 

Répondre

1

I figured it out.

Mon backend était correcte:

  res.download(pathtoFile, filename, (err) => { 
      //err handeling 
     }); 

J'ai fait une erreur avec l'handeling des responsab. Le mappage de la réponse n'était pas correct aussi j'ai mis le type de réponse à blob. Le changement à obtenir était par souci de cohérence.

var headers = new Headers(); 
    headers.append('xyz', '1234'); //request parameter 
    let options = new RequestOptions({ headers: headers, responseType: ResponseContentType.Blob }); 
    this.http.get('apipath', options) 
     .map((response: Response)=> response.blob()) 
     .subscribe(data => { 
      FileSaver.saveAs(data, "filename"); 
     } 
     );