我的ASp.net WebApi(2)项目托管在iiS中,此处员工映像是从另一个共享文件夹(不在IIS下)获取的 (192.168.100.202/shared/photo/Shared/EmployeePhoto/32019/197416.Jpeg).. 我的客户端是Angular 7,但在客户端没有获取图像路径,但出现错误“不允许加载本地资源”
有任何显示api部分中的图像和参考的解决方案
答案 0 :(得分:0)
您需要从服务器流式传输它。像下面这样的东西应该起作用;
[HttpGet]
public HttpResponseMessage GetImage(int employeeId)
{
// TODO: Adjust path by parameter employeeId...
string picturePath = @"//192.168.100.202/shared/photo/Shared/EmployeePhoto/32019/197416.Jpeg";
FileStream fileStream = new FileStream(picturePath, FileMode.Open, FileAccess.Read);
HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK);
response.Content = new StreamContent(fileStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
return response;
}
(这是因为共享文件夹不是Web应用程序的一部分,因此,允许访问外部文件将带来安全风险。)
在使用angular时,您可以在html中执行类似的操作(取决于绑定的外观);
<img [src]="'api/MyController/GetImage?employeeId=' + employee.Id"
onerror="this.onerror = null; this.src = 'content/images/StaticMissingPicture.png'; this.style = 'opacity: 0.5'; this.title = 'Could not get picture';"
class="img-fluid rounded mx-auto d-block"
alt="Employee picture" />