docx文件不会在浏览器中打开,并在IE 8中内联处理
我想从asp.net打开IE中的docx文件。 IIS具有正确映射的MIME类型。 我可以打开pdf很好,但docx总是会提示我像content-disposition ='attachment'一样下载。 有什么设置要做?
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Cookies.Clear();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.CacheControl = "private";
Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
Response.AppendHeader("Content-Length", buffer.Length.ToString());
Response.AppendHeader("Pragma", "cache");
Response.AppendHeader("Expires", "60");
Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
Response.AppendHeader("Content-Disposition",
"inline; " +
"filename="" + "test.docx" + ""; " +
"size=" + buffer.Length.ToString() + "; " +
"creation-date=" + DateTime.Now.ToString("R") + "; " +
"modification-date=" + DateTime.Now.ToString("R") + "; " +
"read-date=" + DateTime.Now.ToString("R"));
Response.BinaryWrite(buffer);
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.End();
正在测试的计算机上安装了Microsoft Word或Word Viewer吗?
如果处理应用程序不存在,浏览器将没有多少选择,只能下载文件。
如果安装了Word,您可能还需要检查Windows文件类型是否将.docx映射到Word,另一个应用程序或什么都不是。 使用本MSKB文章中的说明进行检查
我通常遵循这种格式向用户强制文件:它给了我在所有浏览器中最好的结果(原谅VB而不是C#):
Response.Clear()
Response.ClearHeaders()
Response.Buffer = True
Response.ContentType = "your mime type"
Response.CacheControl = "public"
Response.AddHeader("Pragma", "public")
Response.AddHeader("Expires", "0")
Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0")
Response.AddHeader("Content-Description", "Description of your content")
Response.AddHeader("Content-Disposition", "attachment; filename=""somefile.pdf""")
Response.BinaryWrite(buffer)
Response.Flush()
Response.End()
只需填写空白。 我想你可能会有点太多了。
更新:
我相信你可能已经看到了这些网站,但我会把它们放在这里让其他人偶然发现:
从IE下载Docx - 在IIS中设置MIME类型http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/05/08/office-2007-open-xml-mime-types.aspx
我不确定你的方法在哪里失败。 如果我有更多的时间,我会自己尝试一下; 也许在今晚晚些时候。 祝你好运!
在SSL下,旧版IE(Pre-IE-8)存在此问题。 使用IIS 7.5+的服务器端修补程序是使用URL Rewrite扩展来添加出站规则以去除Cache-Control标头中的“无存储”值,并去除Pragma标头。 这个规则集可以做到这一点:
<outboundRules>
<rule name="Always Remove Pragma Header">
<match serverVariable="RESPONSE_Pragma" pattern="(.*)" />
<action type="Rewrite" value="" />
</rule>
<rule name="Remove No-Store for Attachments">
<conditions>
<add input="{RESPONSE_Content-Disposition}" pattern="attachment" />
</conditions>
<match serverVariable="RESPONSE_Cache-Control" pattern="no-store" />
<action type="Rewrite" value="max-age=0" />
</rule>
</outboundRules>
链接地址: http://www.djcxy.com/p/46821.html
上一篇: docx file doesnt open in browser with content disposition inline in IE 8