繁体   English   中英

从FTP下载文件失败

[英]Downloading files from FTP failing

在我来这里发布问题之前,我检查了其他一些答案,以下脚本有问题,无论我尝试了什么,即使列出目录中的文件,它也不会从FTP下载文件(明显)

因为我组织的很好,所以我喜欢将所有内容简化为一个类,

class FTPHandler
{
    private $connection;

    public function FTPConnect($host, $user, $pass)
    {
        $ftp = ftp_connect($host);
        $login = ftp_login($ftp, $user, $pass) or die("FTP: Login Failed");
        if ($login) {
            $this->connection = array("host" => $host, "user" => $user, "pass" => $pass);
            return $ftp;
        }

        echo "FTP Login Failed";
    }
    public function ListAllFiles($stream, $dir)
    {
        ftp_pasv($stream, true);
        $ls = ftp_nlist($stream, $dir);
        return $ls;
    }

    public function get_conx_info() {
        return $this->connection;
    }
}

使用以下代码:

define("APP_DIR", "./app/");

$ftp = new FTPHandler();

$handle = $ftp->FTPConnect("ftp.example.com.au", "exampleuser", "examplepass");

$files = $ftp->ListAllFiles($handle, APP_DIR);

foreach ($files as $val)
{
    if ($val != "." && $val != ".." && $val != "processed") {

        $local_file     =   $val;
        $remote_file    =   APP_DIR.$val;

        if (ftp_get($handle, $local_file, $remote_file)) {
            echo "Successfully retrieved: $remote_file <br/>";
        }
        else
        {
            echo "Failed retrieving file: $remote_file <br/>";
        }

    }
}

我的回报永远是:

Failed retrieving file: ./app/adsl-1989-csv.csv 
Failed retrieving file: ./app/adsl-1989-sig.png 
Failed retrieving file: ./app/dd-1964-csv.csv 
Failed retrieving file: ./app/dd-1964-sig.png 
Failed retrieving file: ./app/dd-1967-csv.csv 
Failed retrieving file: ./app/dd-1967-sig.png 
Failed retrieving file: ./app/dd-1972-csv.csv 
Failed retrieving file: ./app/dd-1972-sig.png 
Failed retrieving file: ./app/dd-1973-csv.csv 
Failed retrieving file: ./app/dd-1973-sig.png 
Failed retrieving file: ./app/dd-1974-csv.csv 
Failed retrieving file: ./app/dd-1974-sig.png 
Failed retrieving file: ./app/dd-1975-csv.csv 
Failed retrieving file: ./app/dd-1975-sig.png 
Failed retrieving file: ./app/dd-1978-csv.csv 

非常感谢您提供的任何协助,因为我必须让它自动化以减少每周几千的员工预算。

我最终发现FTP服务器本身有故障。

通过更改默认的活动端口,可以修复该错误,因为它丢弃了大多数数据包。

因此,如果有人在遇到相同的问题,那么值得一看。

谢弗雷德-ii-为您提供帮助的尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM