Télécharger le fichier PDF, Angulaire 6 et Web API
Je veux télécharger le fichier PDF à l'aide Angulaire 6 et Web API.
Voici le code de la mise en œuvre,
moncomposant.ts
download(myObj: any) {
this.testService.downloadDoc(myObj.id).subscribe(result => {
var url = window.URL.createObjectURL(result);
window.open(url);
console.log("download result ", result);
});
}
myService.ts
downloadDoc(Id: string): Observable<any> {
let url = this.apiUrl + "api/myApi/download/" + Id;
return this.http.get(url, { responseType: "blob" });
}
API Web Service
[HttpGet("download/{DocId}")]
public async Task<HttpResponseMessage> GetDocument(string docId)
{
var docDetails = await _hoaDocs.GetDocumentDetails(docId).ConfigureAwait(false);
var dataBytes = docDetails.Stream;
var dataStream = new MemoryStream(dataBytes);
var response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(dataStream)
};
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = docDetails.File_Name
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return response;
}
Lorsque j'exécute le code ci-dessus, il n'est pas le téléchargement du fichier PDF, voici le résultat de l'objet qui est enregistré dans la console
download result
Blob(379) {size: 379, type: "application/json"}
size:379
type:"application/json"
__proto__:Blob
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous utilisez .Net De Base.
Vous le type de retour est HttpResponseMessage. Pour .Net de Base-là, il devrait être IActionResult.
Donc, dans votre cas, vous serez de retour
Ou
Vous avez à faire un petit changement dans votre Démarrage.cs fichier:
Puis, je ne suis pas sûr à 100% ici, mais vous devez modifier le routage de trop:
Dans certains navigateur, Nous avons besoin de créer dynamiquement balise d'Ancrage et de le rendre cliquable pour télécharger des fichiers. Voici le code .
Espère que, cela aide. Merci.
dataService.ts
composant.ts
component.html