IE浏览器自动打开文档

IE浏览器自动打开文档

如何在IE浏览器中直接呈现文档内容,而不弹出下载提示。

级别: 初级

WangYanCheng ([email protected]), 作者/编者, ushayden, Inc

2011年 01 月 13 日

通过使用配置window操作系统文档类型关联以及呈现页面中添加iframe完成远程文档内容的呈现。

系统环境

  • Window操作系统
  • IE7、IE6
  • 确认客户端安装了office套件
  • 确认文件能被正常下载

系统配置

  • 1、双击{我的电脑}==》点击[工具菜单]==>选择[文件夹选项]==>在弹出的文件夹选项对话框选择[文件类型]==>选择相应自动打开文件类型(如DOC、XLS)==>点击[高级]==>
  • 1.1 不勾选 [下载后确认打开]
  • 1.2 选中[在同一窗口中浏览]
  • 1.3 在[操作]列表中将[打开]项目设置为默认值,选择[打开(O)]点击[设为默认值]按钮。

图例

IE浏览器自动打开文档

要点

1、服务器端传输文件流时需要设定文档头信息ContentType,ContentType为相应的文档MIME类型,如word类型是application/msword、Excel类型是application/vnd.ms-excel等。

2、也要通过Content-Disposition 直接设定文件扩展名。

代码片断

/** * 文档自动打开测试 * @param request {@link HttpServletRequest} * @param response {@link HttpServletResponse} */ private void doOpenFile(HttpServletRequest request, HttpServletResponse response) { File file = new File("D://work//workspace//mywork//webRoot//test.docx"); try { FileChannel fchannel = new FileInputStream(file).getChannel(); // response.setContentType("application/msword"); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "inline; filename=abc.doc"); OutputStream ous = response.getOutputStream(); WritableByteChannel wbcChannel = Channels.newChannel(ous); ByteBuffer buffer = ByteBuffer.allocate(1024); while (fchannel.read(buffer) != -1) { buffer.flip(); wbcChannel.write(buffer); buffer.clear(); } buffer.clear(); fchannel.close(); wbcChannel.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } }

测试

1、加入iframe

<iframe src="http://localhost/org.ybygjy.Servlet?act=fileOpen" mce_src="http://localhost/org.ybygjy.Servlet?act=fileOpen" width="300" height="300"></iframe>

2、效果

IE浏览器自动打开文档