2016-12-05 4 views
0

Мне нужно отобразить изображение, как если бы оно использовало обычный HTML-код, но я не могу обеспечить нормальный URL-адрес изображения по соображениям безопасности. Вместо этого мне нужно получить изображение из службы WebApi. Я нашел это:Необходимо отобразить изображение, полученное из вызова WebApi

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

И я посмотрел на ссылки, представленные в ответах, но что-то не работает. Все, что я получаю, - это отсутствующий образщик.

Это мой код - на стороне клиента:

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

Это мой WebAPI контроллер Метод

[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; 
}   

И мой метод класса, который получает и возвращает изображение ...

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

Возможно, посмотрите на это http://stackoverflow.com/questions/12467546/is-there-a-recommended-way-to-return-an-image-using-asp-net-web-api –

ответ

0

Dumb ошибка. Блок {} блокировал FileStream до того, как данные были загружены.