我创建了一个ashx处理程序,用于从mysql数据库中的图像渲染图像缩略图。如果通过查询字符串传递文件名,则设置内容处理文件名(当用户单击“另存为...”时,将显示文件名)。当用户选择“另存为...”时,图像会正确显示并显示文件名,但文件类型列为未知,下载的文件没有类型。
我尝试在内容处理中将“.jpg”添加到文件名的末尾,因为没有其他任何东西可以尝试,但这使得每个图像都下载为untitled.bmp。
byte[] imageData = null;
Image outputImage = null;
if (!String.IsNullOrEmpty(HttpContext.Current.Request.QueryString["pictureid"]))
pictureId = SafeConvert.ToInt(HttpContext.Current.Request.QueryString["pictureid"].Trim());
if (pictureId > -1)
{
if (!String.IsNullOrEmpty(fileName))
HttpContext.Current.Response.AppendHeader("Content-Disposition", "filename=" + fileName + ";");
imageData = new OHTManager().GetOrnamentImage(pictureId);
context.Response.ContentType = "text/jpeg";
context.Response.BinaryWrite(imageData);
}
else
{
throw new Exception("No image could be produced;");
}
答案 0 :(得分:2)
我认为你想要{/ 1}}标题的image / jpeg而不是text / jpeg。您还需要设置有效的content disposition;你可能想要依恋。目前,您只有filename参数,并且在没有指定内容处置类型的情况下标题无效。你的标题最终应如下所示:
context.Response.ContentType