我目前需要在我的 WebAPI 控制器上有一个方法,它将存储在我的数据库中的字节数组作为图像或电影返回给我的客户端,其中它将相应地以 html 呈现。
主要问题之一是客户端 html 必须支持到 IE8,因此 HTML5 标签是不可能的。
到目前为止,我的控制器方法如下所示:
[AcceptVerbs("GET")]
public HttpResponseMessage GetFile(int _id)
{
try
{
var content = result from DB call
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(content.File);
if(content.ContentType.Format == Format.Image)
{
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result;
}
else
{
result.Content.Headers.ContentType = new MediaTypeHeaderValue("video/x-ms-wmv");
return result;
}
}
catch (Exception err)
{
throw err;
}
}
上面的代码运行良好并返回了我需要的数据。在客户端方面,我尝试使用对象 HTML 标签,因为它可以显示电影和图像。所以客户端我有这个:
<object width="400" height="400" data="path/to/api">
这种工作,但它没有正确渲染数据,我实际上必须在数据值更改时手动调整屏幕大小。我收到“资源解释为文档但使用 MIME 类型图像/png 传输”的警告,这是有道理的,因为我没有在 HTML 中指定对象的类型,因为它可以是 2 种类型中的 1 种。
还需要循环播放我也没有弄清楚的视频。
我知道一个大而相当开放的问题,但有谁知道这是否是一种体面的方法,或者可以推荐一种替代方法。