.NET 图像处理程序在下载时剥离文件类型
Posted
技术标签:
【中文标题】.NET 图像处理程序在下载时剥离文件类型【英文标题】:.NET image handler stripping filetype on download 【发布时间】:2011-04-19 11:03:14 【问题描述】:我创建了一个 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;");
【问题讨论】:
【参考方案1】:我认为您希望 context.Response.ContentType
标头使用 image/jpeg 而不是 text/jpeg。您还需要设置一个有效的content disposition;你可能想要附件。目前您只有文件名参数,并且在不指定内容处置类型的情况下,标头无效。您的标题最终应如下所示:
Content-Disposition: attachment;filename=the_filename_here.ext
【讨论】:
内容类型是问题,非常感谢!我也按照您的建议更新了我的内容处置标题。以上是关于.NET 图像处理程序在下载时剥离文件类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 FileResult 在 Asp.Net MVC 中下载任何类型的文件?
如何从Javascript中任何图像类型的base64字符串中剥离数据:图像部分