PHP ftp_get():禁止的文件名

时间:2018-03-21 11:21:26

标签: php ftp

我有一个PHP脚本,我连接到FTP并尝试将一些文件下载到我的服务器。

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
$ftp_username='x';
$ftp_userpass='xx';
// connect and login to FTP server
$ftp_server = "xxx";

$conn_id = ftp_connect($ftp_server)or die("Could not connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_username, $ftp_userpass);

// Obtener los archivos contenidos en el directorio actual
$contents = ftp_nlist($conn_id, ".");

foreach ($contents as $file) {
        $local_file = $file;
        $server_file =$file;

        // try download $server_file and save it in $local_file
        if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
            echo "Everything OK\n";
        } else {
            echo "There is a problem\n";
        }
    }
}
ftp_close($conn_id);

此错误提示,文件无法下载:

  

警告:ftp_get():禁止的文件名:。\ Vivotek - GFSF123E-20180321-0850043966.jpg在C:\ xDEVSERVER \ eds-www \ conftp.php上...   有一个问题

我尝试将文件的名称更改为基本和简单(s.ete。0850043966.jpg),但错误仍然存​​在。有什么帮助吗?建议?

1 个答案:

答案 0 :(得分:1)

这是因为您使用ftp_nlist收到的文件名来命名本地存储的文件。

在您的情况下,ftp_nlist收到的文件名具有前导.\,这使得它们不适合本地存储。

您可以删除前缀:

$local_file = substr( $file, 2 );