用于多媒体内容的处理程序(MIME)不起作用

时间:2015-07-23 12:54:53

标签: c# handler mime-types mime

我正在处理一个在页面中显示多媒体内容的处理程序。

这个想法是这个处理程序访问文件并使用扩展名确定类型,并且呈现它,问题处理程序本身被下载的大部分时间并且没有呈现多媒体。

以下是代码:

FileInfo file = new FileInfo(filePath);
byte[] bytes = new byte[file.Length];
using (FileStream fs = file.OpenRead())
{
    fs.Read(bytes, 0, bytes.Length);
}

string extension = Path.GetExtension(filePath);
string mimeDeclaration;
if (".tif" == extension)
    mimeDeclaration = "tiff";
string[] imagenes = new string[] {".jpg", ".jpeg", ".bmp", ".gif", ".png"};
if (imagenes.Any(x => x.Contains(extension)))
    mimeDeclaration = extension.Substring(1);
else
    mimeDeclaration = string.Empty;

context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.ContentType = "image/" + mimeDeclaration;
context.Response.BinaryWrite(bytes);

filePath变量有效。

你能帮我避免处理程序不提供多媒体内容吗?

1 个答案:

答案 0 :(得分:2)

我想我现在知道了,当 mimeDeclaration 为空或错误时,你就不能获得图像下载。

这种情况发生在你的代码中,因为图片的mime类型不是总是" image /"加上文件扩展名:

context.Response.ContentType = "image/" + mimeDeclaration;

例如,对于.jpg图像,它是

  

图像/ JPEG

否则可能是因为它是一个tiff图像,在这种情况下你的else子句将mimeDeclaration设置回空字符串。

提示:按文件扩展名检测MIME类型不太理想,请按照我在此处的方式进行检查:Alternative to FindMimeFromData method in Urlmon.dll one which has more MIME types