2016-12-05 3 views
0

J'ai besoin d'afficher une image comme si j'utilisais du HTML normal, mais je ne peux pas fournir une URL normale à l'image pour des raisons de sécurité. Au lieu de cela, j'ai besoin de récupérer l'image à partir d'un service WebApi. J'ai trouvé ceci:Besoin d'afficher une image récupérée à partir de l'appel WebApi

https://stackoverflow.com/a/24985886/1481314

Et, je l'ai regardé les liens fournis dans les réponses, mais quelque chose ne fonctionne pas. Tout ce que je reçois est un espace réservé d'image manquant.

C'est mon code - côté client:

 angular.element('#' + imageType + '_' + itemID).html('<img src="/api/filemanagermaindata/getFile?systemName=' + baseData.CustomerData.SystemName + '&fileID=' + id + '" />') 

Ceci est mon WebAPI Controller Méthode

[HttpGet] 
[Route("api/filemanagermaindata/getFile")] 
public HttpResponseMessage GetFile(string systemName, int fileID) 
{ 
    var customerData = ValidateUser(systemName, 0); 
    var response = this.fileMover.GetFileDataHttpResponse(customerData.OrganizationID, fileID); 
     return response; 
}   

Et ma méthode de classe qui obtient et renvoie l'image ...

var response = new HttpResponseMessage(); 

try 
{ 
    FileManagerItem item = this.dataService.GetFileByID(fileID); 
    var fullPath = this.rootLocation + Path.Combine(item.PhysicalPath, item.Name); 

if (!File.Exists(fullPath)) 
{ 
    throw new Exception("Unable to locate the requested file"); 
} 

var fileType = Path.GetExtension(item.Name).Replace(".", string.Empty); 

if (ApplicationSettings.Instance.ImageFileExtensions.Contains(fileType)) 
{ 
    fileType = string.Format("image/{0}", fileType); 
} 

using (FileStream fileStream = new FileStream(fullPath, FileMode.Open, FileAccess.Read)) 
{ 
    response = new HttpResponseMessage { Content = new StreamContent(fileStream) }; 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue(fileType); 
    response.Content.Headers.ContentLength = fileStream.Length; 
}; 

return response; 
} 
+0

Peut-être jeter un oeil à ce http://stackoverflow.com/questions/12467546/is-there-a-recommended-way-to-return-an-image-using-asp-net-web-api –

Répondre

0

Erreur muette. Le bloc using {} tue le FileStream avant le chargement des données.