当用户点击我的链接时,它会显示另存为对话框,但它希望将其保存为除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();
}
答案 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));