用于Excel XML的MIMEtypes(ASP.NET 3.5)
我使用CarlosAG-Dll为我创build一个XML-Excel文件(在MemoryStream中)。
Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("content-disposition", "myfile.xml"); memory.WriteTo(Response.OutputStream);
我的问题是,我在客户端得到一个myfile.xls(IE)或myfile.xml.xls(FF),因此从Excel中得到一个恼人的安全警告。
我试了一下,应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet(xlsx),但它甚至不会打开。
所以我需要把.xml剪下来,并把它作为vnd.ms-excel(怎么样?)发送,或者采取另一种MIMEtypes(但哪一个?)。
编辑:我在这里发现了一个错误描述
我想知道这是否仍然开放,为什么?
像这样使用
Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("content-disposition", "attachment; filename=myfile.xls");
对于Excel 2007及更高版本,MIMEtypes不同
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AppendHeader("content-disposition", "attachment; filename=myfile.xlsx");
请参阅MIMEtypes列表
Office 2007文件格式MIMEtypes
编辑:
如果内容不是本地Excel文件格式,而是基于文本的格式(如CSV,TXT,XML),则网站可以将下列HTTP标头添加到它们的GET响应,以告诉IE使用备用名称,并在名称中可以将扩展名设置为正确的内容types:
Response.AddHeader "Content-Disposition", "Attachment;Filename=myfile.csv"
有关更多详情,请参阅此链接
安全警告不是关于MIMEtypes – 它是客户端安全设置,您不能从服务器端禁用!
另外一点 – 改变Response.AppendHeader("content-disposition", "myfile.xml");
至:
Response.AppendHeader("content-disposition", "attachment; filename=myfile.xlsx");
要么
Response.AppendHeader("content-disposition", "inline; filename=myfile.xlsx");
有关参考请参阅http://www.ietf.org/rfc/rfc2183.txt
编辑 – 根据评论:
如果格式不是XLSX(Excel 2007及更高版本),则在上面的代码中使用myfile.xls
。
如果您的文档是Excel Xml 2003文档,则应使用text / xml内容types。
Response.ContentType = "text/xml";
不要指定内容处置。
这个技术与Handler非常相称,而不是WebForm。