【发布时间】:2010-07-15 00:54:02
【问题描述】:
各位, 我真的需要你的帮助。我已经通过 php 成功连接到 ftp 服务器。 我列出了服务器上的所有文件。如果我单击一个文件,浏览器应该会提示一个下载窗口来下载该文件。
我完全不知道该怎么做。我将使用哪种方法。 ftp_get 有点让我困惑。它说我也必须声明一个 local_file。我只想将服务器上的文件下载到我的硬盘。
我该怎么做?
问候马特
【问题讨论】:
各位, 我真的需要你的帮助。我已经通过 php 成功连接到 ftp 服务器。 我列出了服务器上的所有文件。如果我单击一个文件,浏览器应该会提示一个下载窗口来下载该文件。
我完全不知道该怎么做。我将使用哪种方法。 ftp_get 有点让我困惑。它说我也必须声明一个 local_file。我只想将服务器上的文件下载到我的硬盘。
我该怎么做?
问候马特
【问题讨论】:
必须先将远程文件下载到您的服务器,然后才能将其发送给用户。它对用户是不可见的,但您别无选择。 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。
【讨论】:
如果您提供了一个浏览器无法读取的文件的链接(例如 php 文件、音频、视频等),它会要求您下载该文件。
另一种方法是在页面上使用 PHP 标头并打印出该页面,然后链接到该页面。 http://www.ryboe.com/tutorials/php-headers-force-download
【讨论】: