我有一些生成word文档的代码,如下所示:
$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等...只是想尝试让她的生活变得更好更容易!
由于
答案 0 :(得分:3)
我认为你从根本上误解了在哪里运行。 PHP是一种纯粹的服务器端语言。您无法使用它在客户端的PC上打开文件,以便用户在其前面打开一个Word实例。
您可以通过客户端脚本(即VBScript或其他一些Microsoft脚本风格)来实现。但是,要为大量障碍和不兼容性做好准备,因为在所有浏览器中默认情况下会出于安全原因阻止此类事件,有时即使在客户端浏览器中使用特殊设置(“可信站点”),也无法绕过这些块。
您可以在用户的浏览器中将文档显示为嵌入式HTML对象。
最简单的事情可能是生成文件,并将其作为下载提供给用户。然后,用户可以保存并打开它。完成工作。
答案 1 :(得分: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对象没有复制它在传递的删除文件路径中找到的文件吗?你尝试过不同的文件吗?如果这也发生在不同的文件中,那么我们就会遗漏一些东西;我会发现很奇怪,对于您尝试打开的所有网络文件,已经有一个同名的本地文件。尝试重命名网络文件。