Échec du chargement du document PDF - Angular JS - GOUTTE
Je suis en train d'essayer d'obtenir un document PDF à partir de l'API Web, et vous voulez le montrer dans Angulaire de l'App. Se mettre "Échec du chargement du document PDF d'erreur".
J'ai suivi
"AngularJS: Affichage de la goutte (.pdf) dans angulaire app" après.
Alors que, je peux télécharger le même fichier avec succès par la suite "Télécharger le fichier à partir d'un ASP.NET Web API méthode utilisant AngularJS" post.
Ressemble, j'obtiens le fichier en tant que "Bloc de Transfert Codé". De toute façon ce n'est pas décodé en essayant de montrer angulaire de l'app. Veuillez informer.
API Web Code:
HttpResponseMessage result = null;
var localFilePath = @"C:\Test.pdf";
if (!File.Exists(localFilePath))
{
result = Request.CreateResponse(HttpStatusCode.Gone);
}
else
{//serve the file to the client
result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
result.Content.Headers.ContentDisposition.FileName = "Test.pdf";
result.Content.Headers.Add("x-filename", "Test.pdf");
}
return result;
Angulaire De Contrôleur:
myModule.controller("pdfviewerController", function ($scope, $http, $log, $sce) {
$http.post('/api/Sample/GetTestFile', {responseType:'arraybuffer'})
.success(function (response) {
var file = new Blob([response], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
$scope.content = $sce.trustAsResourceUrl(fileURL);
});
});
Modèle HTML:
<embed ng-src="{{content}}" style="width:200px;height:200px;"></embed>
Vous devez vous connecter pour publier un commentaire.
problème est là dans le contrôleur.
{responseType:'arraybuffer'}
est verymuch nécessaire.Pour
$http.get
- Il devrait être le deuxième paramètre.Pour
$http.post
- Il convient de troisième paramètre.Dans le cas ci-dessus, je suis en utilisant $http.poste et j'ai passé
{responseType:'arraybuffer'}
comme deuxième paramètre.$http.post('/api/Sample/GetTestFile', {responseType:'arraybuffer'})
Code corrigé
$http.post('/api/Sample/GetTestFile','', {responseType:'arraybuffer'})