2009-12-23 79 views
0

我有一个生成word文档的一些代码的Word文件,内容如下:打开使用的PHP COM对象

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

现在,我有点希望,我现在就可以打开该文件,一旦它的保存通过执行以下操作:

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

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

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

编辑:只是为了清楚起见,它将被一个单一的用户独占使用,它将随时在Windows机器上安装Word等等......只是想尝试让她的生活变得有点更轻松!

感谢

回答

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对象不是复制它在传递的删除文件路径中找到的文件的服务器吗?你有没有尝试过不同的文件?如果这种情况发生在不同的文件上,那么我们错过了一些东西;我会发现奇怪的是,对于您尝试打​​开的所有网络文件,已经有一个同名的本地文件。尝试重命名网络文件。

+0

非常感谢 - 我现在的路可以正常工作,所以当我将它复制并粘贴到地址栏(使用http://等)时,它仍然可以工作,但它仍然在做它打开的地方它在服务器上代替客户端:( – Nick 2009-12-23 11:38:50

+0

检查分配给两个PC的名称和IP,'$ _SERVER ['REMOTE_ADDR']'的值,以及在客户端PC上是否启用了文件共享。路径I报告的是用于访问网络文件的路径;如果您获取本地文件,则可能是PHP未启用访问远程文件,就好像它们是本地文件一样,或者PHP COM不访问远程文件 – kiamlaluno 2009-12-23 11:46:49

+0

非常感谢 - 只是尝试过,不幸的是,同样的事情,它打开它们,但它打开它们在服务器上!不在客户端:( – Nick 2009-12-23 13:29:57

3

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

您可以也许通过客户端脚本实现,即在VBScript或其他Microsoft脚本风格。尽管如此,由于默认情况下在所有浏览器中出于安全原因阻止了这些内容,并且即使在客户端浏览器中使用特殊设置(“受信任的站点”),也无法绕开这些阻止。

您可能能够在用户浏览器中将文档显示为嵌入式HTML对象。

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