【问题标题】:PHP: prompting download from ftp?PHP:提示从 ftp 下载?
【发布时间】:2010-07-15 00:54:02
【问题描述】:

各位, 我真的需要你的帮助。我已经通过 php 成功连接到 ftp 服务器。 我列出了服务器上的所有文件。如果我单击一个文件,浏览器应该会提示一个下载窗口来下载该文件。

我完全不知道该怎么做。我将使用哪种方法。 ftp_get 有点让我困惑。它说我也必须声明一个 local_file。我只想将服务器上的文件下载到我的硬盘。

我该怎么做?

问候马特

【问题讨论】:

    标签: php ftp


    【解决方案1】:

    必须先将远程文件下载到您的服务器,然后才能将其发送给用户。它对用户是不可见的,但您别无选择。 PHP 不会让浏览器直接与 FTP 服务器对话。

    创建一个单独的 php 脚本,为特定文件调用 ftp_get,将其临时存储到您的服务器以允许用户下载它。

    类似:

    <?php
    //assume the page was called like download.php?filename=downloaded.pdf
    header('Content-Disposition: attachment; filename="'.$_GET['filename'].'"');
    $tempFile = 'temp'.rand();
    ftp_get($ftp, $tempFile, $_GET['filename'], FTP_BINARY);
    
    readfile($tempFile);
    

    您也可以添加代码来删除 tempFile。

    【讨论】:

    • 我已经尝试过这样做。我只是不知道如何使用 ftp_get。我必须声明的本地文件是什么?我不想声明本地文件。它应该只获取服务器文件并将其下载到任何硬盘。
    • 首先将文件“临时”下载到您的服务器。该文件必须对您的服务器进行维修,您无法绕过。然后使用“header”功能和“readFile”功能,用户将能够立即将文件下载到他的本地硬盘驱动器。
    • 哇,谢谢!它几乎可以工作了。不知何故,唯一的问题似乎是我无法在本地打开文件。它以相同的名称保存它(带有正确的后缀)。但是我下载的每个文件都有点损坏。知道那可能是什么吗?
    • 这意味着您实际上并没有将数据正确保存到您的服务器(0 文件大小),或者您尝试使用 readfile 打开的文件是错误参考或无法读取它。
    • 我认为文件类型是错误的。例如如果我下载 .jpg,firefox 提示会告诉我文件的类型是超文本标记语言。 Google Chrome 甚至在文件末尾添加了一个额外的 .jpg.html。 ?
    【解决方案2】:

    如果您提供了一个浏览器无法读取的文件的链接(例如 php 文件、音频、视频等),它会要求您下载该文件。

    另一种方法是在页面上使用 PHP 标头并打印出该页面,然后链接到该页面。 http://www.ryboe.com/tutorials/php-headers-force-download

    【讨论】:

    • 我不知道如何提供该文件的链接。它实际上不是服务器上文件本身的链接,而是路径的名称。但它并不指向服务器上的文件。我正在通过 ftp_connect 连接。我不知道如何指向服务器上的文件。服务器受用户名和密码保护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多