【问题标题】:How to download csv files form another server to my server by using FTP connection [duplicate]如何使用 FTP 连接将 csv 文件从另一台服务器下载到我的服务器[重复]
【发布时间】:2019-02-11 15:43:30
【问题描述】:

您好,我想使用 FTP 连接将位于一台服务器根文件夹中的 csv 文件夹中的 csv 文件下载到我的服务器。我添加了以下代码。它不适合我。 FTP 连接正常,使用此命令 ftp_nlist 列出所有文件。您能帮我将文件从一台服务器的一个文件夹下载到服务器的另一个文件夹吗?

$ftpHost   = 'ftp.site.in';
$ftpUsername = 'username';
$ftpPassword = '******';

// open an FTP connection
$connId = ftp_connect($ftpHost) or die("Couldn't connect to $ftpHost");

// try to login
if(@ftp_login($connId, $ftpUsername, $ftpPassword)){
    echo "Connected as $ftpUsername@$ftpHost";
}else{
    echo "Couldn't connect as $ftpUsername";
}
$contents = ftp_nlist($connId, ".");
var_dump($contents);
// local & server file path
$localFilePath  = 'csv';
$remoteFilePath = 'public_html/csvfiles/';
// try to download a file from server
if(ftp_get($connId, $localFilePath, $remoteFilePath, FTP_BINARY)){
    echo "File transfer successful - $localFilePath";
}else{
    echo "There was an error while downloading $localFilePath";
}

【问题讨论】:

  • “不工作”实际上是什么意思?你有错误吗?哪一个?您是否看到应用程序挂起?直到发生什么?逻辑是否终止但您看不到结果?启动脚本时宇宙会内爆吗?
  • 您很可能遇到了防火墙问题。你真的确定你知道 ftp 协议是如何工作的吗?那台远程服务器需要能够连接到您的服务器吗?通过所有防火墙?
  • 我收到以下错误下载 csv 时出错
  • ftp_get 将单个文件名作为参数,而不是目录。如果要递归复制整个目录,则需要遍历列出的文件。您可能还想寻找一个库来为您执行此操作 - 这比编写自己的 FTP 命令要容易得多。
  • 我只想下载一个文件

标签: php file csv ftp export


【解决方案1】:

ftp_get 在其两个参数中都采用文件路径,而不是文件夹路径。

所以这是正确的:

$localFilePath  = 'csv/myfile.csv';
$remoteFilePath = 'public_html/csvfiles/myfile.csv';

ftp_get($connId, $localFilePath, $remoteFilePath, FTP_BINARY);

【讨论】:

  • 就我而言,我的文件名会改变
  • 你的问题在哪里说的?!? - 如果你想从众多文件中下载一个特定的文件,你必须通过一些规则/算法来选择它。我们无法知道那条规则是什么。你必须告诉我们!
  • 我的文件夹有 10 个 csv 文件,我需要获取最新上传的 CSV 文件,请您为我提供代码
猜你喜欢
  • 2018-07-08
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
相关资源
最近更新 更多