使用Php从FTP获取文件
我正在尝试使用php中的ftp从另一台服务器获取一个文件到我的服务器 有两个步骤。第一步是从我成功完成的服务器发送文件 现在我需要从仓库ftp服务器获取一个文件。我成功地连接到它,并从那里获得了文件列表。但是我不知道我怎样才能拿到它。这里是发送代码。我尝试在我的服务器和仓库服务器之间切换,但它不起作用,并且一直说文件不存在,因为文件在那里 有什么想法吗 这是发送文件的代码使用Php从FTP获取文件,php,ftp,Php,Ftp,我正在尝试使用php中的ftp从另一台服务器获取一个文件到我的服务器 有两个步骤。第一步是从我成功完成的服务器发送文件 现在我需要从仓库ftp服务器获取一个文件。我成功地连接到它,并从那里获得了文件列表。但是我不知道我怎样才能拿到它。这里是发送代码。我尝试在我的服务器和仓库服务器之间切换,但它不起作用,并且一直说文件不存在,因为文件在那里 有什么想法吗 这是发送文件的代码 $ftp_server = SERVER_IP; $ftp_user_name = FTP_USER; $ftp_us
$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
$ftp\u server=server\u IP;
$ftp\u user\u name=ftp\u user;
$ftp\u user\u pass=ftp\u pass;
$ftp_dir=“public_html/inbound/”;
$mode=“列出xml文件”;
$file=”“;
如果($file\u list=ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$file)){
$ftp_server=仓库_server;
$ftp\u user\u name=仓库\u ftp\u用户;
$ftp\用户\通行证=仓库\ ftp\通行证;
$ftp\u dir=文件目录;
$mode=“ftp_至_仓库”;
foreach($v文件列表){
如果($file\u upload=ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$v)){
回显“已发送文件”;
}
其他的
{
回声“错误”;
}
函数ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$file){
$conn\u id=ftp\u connect($ftp\u server);
$login\u result=ftp\u login($conn\u id,$ftp\u user\u name,$ftp\u user\u pass);
如果(!$conn_id)| |(!$login_result)){
echo“FTP连接失败!
”;
echo“试图为用户$ftp\u用户名连接到$ftp\u服务器
”;
出口
}否则{
#echo“连接到$ftp\u服务器,用于用户$ftp\u用户名”;
}
交换机($模式){
案例“列表xml文件”:
$contents=array();
ftp_chdir($conn_id,$ftp_dir);//更改目录
//获取当前目录中的.xml文件
$contents=ftp\u nlist($conn\u id,*.xml”);
///////////////////////////////////////////////////////////////如果没有要处理的文件怎么办?
如果(计数($contents)>0){
//输出$contents
//打印(内容);
//退出;
返回$contents;
}否则{
返回FALSE;
}
打破
案例“ftp到仓库”:
//上传文件
$source_file='tracking_number_xmls/pending/'。$file;
ftp_chdir($conn_id,$ftp_dir);//更改目录
$destination_file=$file;
$upload=ftp\u put($conn\u id,$destination\u file,$source\u file,ftp\u TEXT);//ftp\u二进制文件
//检查上传状态
如果(!$upload){
echo“FTP上传失败!
”;
返回FALSE;
}否则{
echo“将$source_文件作为$destination_文件上载到$ftp_服务器
”;
返回TRUE;
}
打破
违约:
回应“什么也没做”
;
}
//关闭FTP流
ftp_关闭($conn_id);
}//结束函数
Try我已经尝试过了,但它总是给出错误,文件找不到…记住使用指向您正在处理的目录的完整服务器路径。服务器路径与“ftp路径”不同。好的,那么如果我有服务器ip,即“123.456.789.1”,并且文件位于公共html/文件夹中,那么它的完整路径是什么?