.NET图像处理程序在下载时剥离文件类型

时间:2010-09-30 16:21:41

标签: asp.net download ashx content-disposition

我创建了一个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 个答案:

答案 0 :(得分:2)

我认为你想要{/ 1}}标题的image / jpeg而不是text / jpeg。您还需要设置有效的content disposition;你可能想要依恋。目前,您只有filename参数,并且在没有指定内容处置类型的情况下标题无效。你的标题最终应如下所示:

context.Response.ContentType