1

我创建了一个 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;");
        }
4

1 回答 1

2

我认为您想要图像/jpeg 而不是 text/jpeg 作为您的context.Response.ContentType标题。您还需要设置有效的内容处置;你可能想要附件。目前您只有文件名参数,并且在不指定内容处置类型的情况下,标头无效。您的标题最终应如下所示:

Content-Disposition: attachment;filename=the_filename_here.ext
于 2010-09-30T16:26:01.893 回答