将文件保存在用户桌面中

时间:2009-06-12 11:35:21

标签: php

我有一个文件,我可以生成pdf,但我希望路径是用户桌面,可以自动保存。

$pdf->Output("sample.pdf");

应该是什么道路。

4 个答案:

答案 0 :(得分:3)

无论您拥有什么样的服务器端,您都无法通过浏览器自动将文件保存在用户的系统上,而无需与他们进行任何交互,因为这将是一个巨大的安全漏洞。用户将始终必须确认文件的保存。

由于类似的原因,您将无法通过浏览器查询用户系统的目录结构,即使您认为您可以认为您可以为浏览器提供一个保存内容的建议目录。 / p>

答案 1 :(得分:1)

你不能用PHP做到这一点。 PHP在您的服务器上运行,而不是在用户的桌面上运行。您可能希望将文件存储在服务器上的某个位置,然后向用户显示一个链接以下载生成的文件。

除非您当然在谈论在用户计算机上本地运行PHP(即用户计算机上安装了apache或其他一些网络服务器,在这种情况下请澄清您的问题。

答案 2 :(得分:1)

假设您的php脚本通过命令行界面或PHP-GTK作为客户端应用程序运行,您应首先检查它运行的系统是否实际上是Win32类型的计算机。

接下来,你需要使用Windows Only Extensions来调用本机Win32 API函数调用,返回一个众所周知的位置,例如用户的桌面文件夹,SHGetFolderPath()CSIDL_DESKTOP作为第二个参数。

但是,如果您的脚本在服务器上运行,则无法在没有实际指示的情况下将文件直接放在用户桌面上。

答案 3 :(得分:0)

您应该将PDF输出到浏览器并提供相应的标题以将文件识别为PDF(或者仅可下载以强制下载)。另外,请确保不要输出除PDF之外的任何内容,否则可能会破坏文件。

编辑:请注意,如果您使用webbrowser,出于安全原因,它不可能强制自动下载。您只能提示下载,而不是激活它。

如果您正在谈论PHP脚本(例如在Linux工作站上),您可能想要做一些完全不同的事情。如果PDF库不允许您指定路径,请执行与在Web浏览器中执行的操作相同的操作,并使用输出缓冲区来捕获输出并将其写入文件 - 如果直接运行脚本,它将具有写入您的主目录所需的权限。