ASHX Image Download保存为ASHX

时间:2011-04-06 18:31:02

标签: c# asp.net content-type ashx

当用户点击我的链接时,它会显示另存为对话框,但它希望将其保存为除IE以外的任何其他浏览器中的ashx文件。该文件是从数据库中获取的标准jpeg。会导致这种情况的原因是什么?

       string id = ctx.Request.QueryString["id"];

        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand("EBig", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@EID", id);

        byte[] pict = null;
        ctx.Response.ContentType = "image/pjpeg";
        try
        {
            con.Open();
            pict = (byte[])cmd.ExecuteScalar();

            ctx.Response.Clear();

            ctx.Response.AppendHeader("content-disposition", "attachment;");
            ctx.Response.ContentType = "image/pjpeg";
            ctx.Response.BinaryWrite(pict);
            ctx.Response.Flush();
            ctx.Response.End();
        }
        catch
        {

        }
        finally
        {
            con.Close();
        }

2 个答案:

答案 0 :(得分:3)

Hanselman has a post就此而言。它涉及在filename响应标头上设置名为Content-Disposition的附加属性。

相关RFC is here相关部分为2.3:

  

如果实体是,发件人可能想要建议使用的文件名      分离并存储在单独的文件中。如果接收MUA写入      实体到文件,建议的文件名应该用作      在可能的情况下,实际文件名的基础。

答案 1 :(得分:0)

您需要添加文件名:

context.Response.AppendHeader("Content-Disposition",
    string.Format("attachment;filename={0}", yourFileName));