2016-08-04 85 views
0

是否可以使用header()函数或其他php函数将文件传递到浏览器本地?使用header()传递文件到浏览器php

我目前使用的是Chrome浏览器。我安装了Office Editing for Docs扩展程序,它基本上允许我通过将完整的目录和文件名称传递到Chrome的URL地址栏来将Word docx文件本地打开到我的Chrome浏览器。这实质上是在Chrome中打开Word文件。我想完成这个任务在php

我已经尝试了以下但没有运气。

header('Location: file://c:\users\jbloggs\desktop\test.docx'); 

我知道header()函数主要用于重定向到一个网页

header('Location: http://www.google.com'); 

任何帮助非常赞赏。

+1

PHP是服务器端,不能在客户端打开文件。 –

+3

你需要养成[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)的习惯,它可以帮助你解决你的问题。你将获得积分,并鼓励其他人为你提供帮助。 –

+1

问题是:*为什么?*和你有一个Web服务器/ PHP安装?你真的想在这里做什么? –

回答

1

它不以这种方式工作,因为您试图从远程服务器重定向到本地文件路径。由于安全考虑,Chrome不接受此操作。请注意,您的Web服务器是否在同一台物理机上运行并不重要,它被视为与本地文件系统不同的服务器。您可以使用普通的HTML但是完成这项任务:

<a href="file://c:\users\jbloggs\desktop\test.docx">Document</a> 

如果您保存这一个静态的HTML文件,并在浏览器中,你应该在点击被重定向到文件打开它。如果您想要直接重定向,请使用JavaScript window.location但是,您不能从HTTP服务器提供文件,如上所述。

如果你想这样做,你也必须从你的服务器提供.docx文件,把它作为静态内容加入,然后通过HTTP连接到它。

希望这会有所帮助!

+0

但为什么PHP必须知道?它只需要将该值传递给浏览器。它可以愉快地重定向到'磁铁:'URL和什么,它当然没有原生支持? – Siguza

+0

是的我过于简单化,并使我的回答错误。看我的编辑。我实际上不确定是否完全不可能通过PHP进行重定向,但这绝对不是最佳做法。最佳做法是从服务器上为.docx文件提供服务,而不是本地文件系统。 – Peter

+0

我完全同意这一点。我只是想知道为什么其他URL工作,但不是file:// ones。它是有道理的,但这将是一个浏览器安全功能。 – Siguza