【发布时间】:2010-12-03 13:45:49
【问题描述】:
如何在浏览器中打开和查看.doc 文件扩展名?该文件位于我的服务器上。
【问题讨论】:
如何在浏览器中打开和查看.doc 文件扩展名?该文件位于我的服务器上。
【问题讨论】:
两个选项:首先是链接到它,例如<a href="MyWordDocument.doc">My Word Document</a>,第二种是使用iframe,指向文档。然而,为了使其工作,大多数浏览器要求服务器随文档发送一个Content-disposition: inline 标头。如果您无法配置您的网络服务器来执行此操作,您可以将文档包装在一些 php 中:
<?php
header('Content-disposition: inline');
header('Content-type: application/msword'); // not sure if this is the correct MIME type
readfile('MyWordDocument.doc');
exit;
然后链接到该脚本而不是您的 Word 文档。
但这并不能保证有效; content-disposition 标头只是一个提示,任何浏览器都可以选择将其视为附件。
另外,请注意 .doc 不是完全可移植的;基本上,您需要 Word 才能正确显示它(Open Office 和其他一些开源应用程序做得不错,但还没有完全实现),并且浏览器必须支持将 Word 作为插件打开。
如果 .doc 文件格式要求不是一成不变的,那么 PDF 将是一个更好的选择(转换通常就像在 PDF 打印机上打印一样简单,例如,CutePDF,从 Word 内部),或者也许你甚至可以将文档转换为 HTML(虽然里程可能会有所不同)。
【讨论】:
.doc 文件时并非100% 准确,但对于MS-Word 也是如此。两者的失败率大致相同;问题在于.doc 格式。
<a href="foo.doc">…</a>
您需要一个安装了 Office 文档插件的浏览器。我相信 Microsoft Office 至少会默认为 Internet Explorer 安装一个。
如果您想在没有插件的情况下工作,那么您需要将文档转换为另一种格式——HTML 以获得最大的兼容性。这不是一个简单的操作,尤其是对于复杂的文档(甚至是那些只包含图像的文档)。
【讨论】:
$file = "$file_name.doc";
$len = filesize($file); // Calculate File Size
ob_clean();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type:application/zip"); // Send type of file
$header="Content-Disposition: attachment; filename=$patient_name.zip;"; // Send File Name
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len); // Send File Size
@readfile($file);
【讨论】:
headers,但文件已损坏,这个答案的headers 终于奏效了。
您可以改用 google docs,因为它免费且可靠 您可以将文件路径分配给 iframe。
例如iframe1.Attributes.Add("Src", "http://docs.google.com/gview?url=http://YOUR_FILE_PATH&embedded=true");
【讨论】:
如果您的 .doc 文件可以在线访问,您可以尝试Office Web Viewer 服务。
如果你的文件存储在Intranet,你可以使用Microsoft Office Web AppsServer。它允许用户通过浏览器查看 Word、PowerPoint、Excel 文档。
【讨论】:
//Edit
$header="Content-Disposition: attachment; filename=$file_name.doc;"; // Send File Name
【讨论】: