我正在尝试使用php中的ftp从另一台服务器将文件提取到我的服务器中。
有两个步骤。第一步是从我的服务器发送文件,我已成功完成。
现在我需要从仓库ftp服务器获取文件。我成功连接到它,并从那里获取文件列表。但我不知道如何才能获取它。这里发送的是代码。我尝试在MY SERVER和The Warehouse服务器之间切换,但它不起作用并继续说文件不存在,因为文件在那里。
有什么想法吗?
以下是发送文件的代码
$ftp_server = SERVER_IP;
$ftp_user_name = FTP_USER;
$ftp_user_pass = FTP_PASS;
$ftp_dir = "public_html/inbound/";
$mode = "list_xml_files";
$file = "";
if ($file_list = ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$file)) {
$ftp_server = WAREHOUE_SERVER;
$ftp_user_name = WAREHOUSE_FTP_USER;
$ftp_user_pass = WAREHOUSE_FTP_PASS;
$ftp_dir = FILE_DIRECTORY;
$mode = "ftp_to_warehouse";
foreach ($file_list as $v) {
if ($file_uploaded = ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$v)) {
echo "FILE SENT";
}
else
{
echo "ERROR";
}
function ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$file) {
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!<br>";
echo "Attempted to connect to $ftp_server for user $ftp_user_name<br>";
exit;
} else {
#echo "Connected to $ftp_server, for user $ftp_user_name";
}
switch ($mode) {
case "list_xml_files":
$contents = array();
ftp_chdir($conn_id, $ftp_dir); // Change Directory
// get .xml files in the current directory
$contents = ftp_nlist($conn_id, "*.xml");
/////////////////////////////////////////////////////////////// What if there's no files to process?
if (count($contents) > 0) {
// output $contents
// print_r($contents);
// exit;
return $contents;
} else {
return FALSE;
}
break;
case "ftp_to_warehouse":
// upload the file
$source_file = 'tracking_number_xmls/pending/' . $file;
ftp_chdir($conn_id, $ftp_dir); // Change Directory
$destination_file = $file;
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_TEXT); // FTP_BINARY
// check upload status
if (!$upload) {
echo "FTP upload has failed!<br>";
return FALSE;
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file<br>";
return TRUE;
}
break;
default:
echo "Nothing Done<br>";
}
// close the FTP stream
ftp_close($conn_id);
} // end function