从共享文件夹Asp.net Web API获取图像文件路径

时间:2019-03-15 11:30:08

标签: asp.net api web

我的ASp.net WebApi(2)项目托管在iiS中,此处员工映像是从另一个共享文件夹(不在IIS下)获取的 (192.168.100.202/shared/photo/Shared/EmployeePhoto/32019/197416.Jpeg).. 我的客户端是Angular 7,但在客户端没有获取图像路径,但出现错误“不允许加载本地资源”

有任何显示api部分中的图像和参考的解决方案

1 个答案:

答案 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" />