【问题标题】:Opening a Word document using the PHP COM object使用 PHP COM 对象打开 Word 文档
【发布时间】:2009-12-23 11:17:38
【问题描述】:

我有一些生成word文档的代码,如下:

$word->Documents [1]->SaveAs ( $localDir . $filename );

现在,我有点希望现在可以通过执行以下操作来打开文件:

$word->Documents->Open($remoteDir . $filename)

// remotedir = 'word/', so for example the above would be '/word/document1.doc'

但它似乎在主机上打开它,而不是用户!无论如何要在用户的机器上而不是在服务器上打开它?

编辑:只是为了清楚起见,它将由单个用户专门在 Intranet 上使用,该用户将始终在 Windows 机器上,安装 Word 等...只是想尝试让她的生活简单一点!

谢谢

【问题讨论】:

    标签: php ms-word document


    【解决方案1】:

    我认为您从根本上错误地认为什么在哪里运行。 PHP 是一种纯粹的服务器端语言。您不能使用它打开客户端 PC 上的文件,以便用户在他们面前打开一个 Word 实例。

    您可以也许通过客户端脚本实现,即在 VBScript 或其他一些 Microsoft 脚本风格中。不过,要为巨大的障碍和不兼容做好准备,因为在所有浏览器中,出于安全原因,默认情况下这些内容都会被阻止,有时即使在客户端浏览器中使用特殊设置(“受信任的站点”)也无法绕过这些阻止。

    您可以在用户的​​浏览器中将文档显示为嵌入的 HTML 对象。

    真正最简单的事情可能是生成文件,并将其作为下载提供给用户。然后用户可以保存并打开它。任务完成。

    【讨论】:

      【解决方案2】:

      /word/document1.doc 是服务器中文件的路径,而不是客户端中的路径。在 Windows 上,假设客户端 PC 启用了文件共享,则可以使用 \\IP\word\document1.doc 等路径,其中 IP 为客户端 PC 的 IP。
      可以通过$_SERVER['REMOTE_ADDR']获取连接服务器的PC的IP; $_SERVER['REMOTE_HOST'] 是 DNS 反向查找的结果,在您的情况下,它可能返回与 $_SERVER['REMOTE_ADDR'] 相同的值。

      如果没有设置 PHP 可能不会打开远程文件(有一个指令或那个)。

      如果直接从 COM 对象访问共享文件不起作用,那么您可以将文件从客户端 PC 复制到服务器的临时文件中,然后将该文件交给 COM 对象。这样,如果访问网络文件时出现任何错误,您应该能够得到它们。

      无论如何,我觉得很奇怪,通过网络文件路径得到一个本地文件。您确定 COM 对象没有复制服务器它在传递的删除文件路径中找到的文件吗?您是否尝试过使用其他文件?如果这也发生在不同的文件上,那么我们错过了一些东西;我会觉得奇怪的是,对于您尝试打​​开的所有网络文件,已经有一个同名的本地文件。尝试重命名网络文件。

      【讨论】:

      • 非常感谢 - 我的路径现在可以正常工作了,所以当我将其回显并粘贴到地址栏时(也可以使用 http:// 等)它可以工作,但它仍然在做它在服务器而不是客户端上打开它的东西:(
      • 检查分配给两台 PC 的名称和 IP、$_SERVER['REMOTE_ADDR'] 的值以及客户端 PC 上是否启用了文件共享。我报的路径是用来访问网络文件的路径;如果你正在获取本地文件,那么可能是 PHP 没有像本地文件一样访问远程文件,或者 PHP COM 没有访问远程文件。
      • 非常感谢 - 刚刚尝试过,不幸的是,同样的事情,它打开了它们,但它在服务器上打开了它们!不在客户端:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多