PHP脚本允许用户从远程FTP服务器下载文件[重复]

Posted

技术标签:

【中文标题】PHP脚本允许用户从远程FTP服务器下载文件[重复]【英文标题】:PHP script to allows user to download file from remote FTP Server [duplicate] 【发布时间】:2021-04-08 19:29:24 【问题描述】:

我有一个带有公共 IP 的 FTP 服务器,用于与其他无需身份验证即可下载的用户共享文件(例如ftp://88.88.111.111/file.txt)。 您可能知道,最近 Google Chrome 开始过滤 FTP 连接。 (我知道有一些解决方法,但我对替代解决方案感兴趣。

我想要实现的是来自托管我的网站(并且支持 HTTPS 连接)的服务器的 php 接口,因此用户可以转到 https://www.mywebsite.com/interface.php?get=file.txt,他们实际上会在他们的计算机上下载从 @ 获取的文件987654325@。 因此,用户不会使用任何 FTP 连接,这完全是隐藏的。 (不知道有没有把我的想法解释清楚)

我不是这方面的专家,所以我想了解它是否可以完成,以及您是否有一些关于如何实施的指示。

提前致谢!

【问题讨论】:

有几种方法可以做到这一点。如果 FTP 服务器和 web 服务器在同一台机器上,你可以剪掉 web 版本的 FTP 部分,然后看磁盘。如果它们在不同的机器上,您仍然可以像以前一样执行相同的操作,但使用Flysystem 之类的抽象。否则,您可以使用 FTP functions 构建自己的,这不是很漂亮,只是为了警告您。 它们在不同的机器上。谢谢你的建议,我会看看的! 【参考方案1】:

你可以这样做从 FTP 服务器下载文件到网络服务器,然后让用户从网络服务器下载文件。

$file_url = "ftp://88.88.111.111/" . $_GET['file'];
$file_tmp = file_get_contents($file_url);
file_put_contents("/var/www/html/files/ . $file_tmp);
$download_url = "https://www.mywebsite.com/files/" . $_GET['file'];
header('Location: $download_url');
exit;

【讨论】:

无需将文件存储在网络服务器上。见Download file via PHP script from FTP server to browser with Content-Length header without storing the file on the web server。 感谢大家的帮助!我只需 10 行代码就能做到这一点

以上是关于PHP脚本允许用户从远程FTP服务器下载文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 下载 FTP 文件 [重复]

Linux下FTP实用命令

远程FTP下载文件

php - ftp 上传文件到远程服务器

C# 从FTP下载文件报错: 远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。

用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件