我正在使用写入文件Response.WriteFile(path);Server.WriteFile在浏览器中打开文件,而不是显示另存为对话框
我的问题是,它总是显示另存为对话框,我想要的是,如果文件类型是JPG,PDF或任何浏览器兼容的文件,它应该在浏览器中打开它;保存对话框应该只打开其他浏览器不兼容的文件
我正在使用写入文件Response.WriteFile(path);Server.WriteFile在浏览器中打开文件,而不是显示另存为对话框
我的问题是,它总是显示另存为对话框,我想要的是,如果文件类型是JPG,PDF或任何浏览器兼容的文件,它应该在浏览器中打开它;保存对话框应该只打开其他浏览器不兼容的文件
您可以用Content-Disposition标头在很大程度上控制此行为。
为了强制浏览器显示 另存为对话框中单击 超链接时,你必须包括 以下在 文件HTTP响应头被下载:
内容处置:附件; 名= <文件name.ext >
哪里是 要出现在另存为文件名对话框 (如finances.xls或mortgage.pdf) - 没有<和>符号。
你在那里描述的应该是默认行为。浏览器将根据MIME /内容类型决定它可以和不能呈现的内容。在您的ASP.NET代码中,将Response.ContentType设置为适当的MIME类型,并使用Response的输出流将文件内容发送回浏览器。
对IE的可用MIME类型进行了讨论here。
图像您的代码应该是这个样子.......
Response.ContentType = dtbl[0].FileExt;
Response.BinaryWrite(dtbl[0].ResData);
文档代码应该是这个样子....
Byte[] bytes = (Byte[])dtbl.Rows[0]["ResData"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = dtbl.Rows[0]["FileExt"].ToString();
Response.AddHeader("content-disposition", "attachment;FileName=" + dtbl.Rows[0]["DocName"].ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
什么服务器端环境? – 2009-07-28 03:11:19
那么,你面临的问题是什么? – shahkalpesh 2009-07-28 03:12:30
@ Daniel A. White - 看看这些标签。 @ shahkalpesh - 我正在编辑我的问题 – Shimmy 2009-07-28 03:15:44