将多个.xml文件上传到ftp服务器

时间:2019-08-14 09:37:46

标签: php foreach ftp upload

我需要从本地文件夹中将多个.XML格式文件上传到ftp服务器,同时根据上传日期和序列号更改其名称。

示例:

  • 20190814-00000001-1.xml
  • 20190814-00000002-2.xml
  • 20190814-00000003-3.xml

尝试使用glob选择本地文件夹中的所有.XML文件。 我尝试将其中的.XML文件循环到本地文件夹。

可以连接并登录到ftp服务器,并且可以成功上传单个.XML文件而不更改名称。

  

但是我需要多个.XML文件的帮助,却不知道我的状态   在上传到ftp之前要更改文件名   服务器。

// connection info
$usr = 'ftp_usrname';
$pwd = 'ftp_password';
$ftp_server = "ftp_server";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $usr, $pwd);  
ftp_pasv($ftp_conn, true) or die("Cannot switch to passive mode");  

foreach (glob("xml/*.xml") as $filename) {      // local files folder
    $ftp_path = 'test1/';                       // ftp folder to save the files
    ftp_put($ftp_conn,$ftp_path , $filename, FTP_BINARY);
}     

// close connection
ftp_close($ftp_conn);

我希望上传到ftp服务器的本地文件夹中的所有文件的名称会根据上传日期和序列号而更改。

1 个答案:

答案 0 :(得分:1)

假设您的代码可以上传单个文件,可以更改文件名:

$counter = 1;
foreach (glob("xml/*.xml") as $filename) {      // local files folder
    $ftp_path = 'test1/';                       // ftp folder to save the files

    $serial = str_pad($counter, 8, "0", STR_PAD_LEFT);
    $new_file_name = date("Ymd") . "-{$serial}-{$counter}.xml";
    ftp_put($ftp_conn, $ftp_path . $new_file_name, $filename, FTP_BINARY);

    $counter++;
}