使用 PHP 下载 FTP 文件 [重复]
Posted
技术标签:
【中文标题】使用 PHP 下载 FTP 文件 [重复]【英文标题】:FTP file download with PHP [duplicate] 【发布时间】:2021-12-23 14:06:56 【问题描述】:我正在尝试使用 FTP 在我的网页上制作一个下载按钮。 但是当我尝试这样做时,下载的文件会保存到托管我的网站的机器上,而不是我想要的用户 PC 上。是不是不行,所以可以像下图一样从FTP正常下载文件?
这是我现在拥有的下载FTP功能,它将文件下载到我的网站项目文件夹中..
function FTP_download($id)
ob_end_flush();
$remote_file = $id.'.log';
$local_file = $id.'.log';
$conn_id = ftp_connect($this->ftp_server);
$login_result = ftp_login($conn_id, $this->ftp_user_name, $this->ftp_user_pass);
// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $remote_file, FTP_BINARY))
echo "Successfully written to $local_file\n";
else
echo "There was a problem\n";
// close the connection
ftp_close($conn_id);
【问题讨论】:
见php.net/manual/en/function.readfile.php。那不是FTP。您无法更改发出请求的协议。 @user3783243 啊啊我明白了,所以我必须下载.php
文件并包含一些特定的headers
,然后使用readfile
函数来创建下载? :)
您不一定需要单独的文件,但是您需要让 PHP 将文件转发到客户端
@ADyson 刚刚尝试了readfile
,它输出了我的text file
的内容,所以我想我必须制作一些其他文件并下载headers?
您可以将标头调用放在此文件中。这告诉浏览器该做什么。你本机说它是 html,所以浏览器会这样渲染它。
【参考方案1】:
所以我已经为下载我的.log
文件制定了解决方案
FTP_download.php
...
$file = $_GET['file'].'.log';
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// get the size of $file
$size = ftp_size($conn_id, $file);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile('ftp://'.$ftp_user_name.':'.urlencode($ftp_user_pass).'@'.$ftp_server.'/'.$file);
exit;
我有一个功能,其中包含指向此 .php
页面的下载链接
<?php
function FTP_download($id)
?> <a href="ftp_download.php?file=<?php echo $id; ?>" download> Download logfile</a> <?php
?>
【讨论】:
无论如何登录后,使用ftp://
效率低下,因为您不必要地创建另一个连接,请使用ftp_get($conn_id, "php://output", $file, FTP_BINARY);
,如***.com/q/47240635/850848 所示
我应该删除连接/登录部分吗?以上是关于使用 PHP 下载 FTP 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章