/采用FTP上传文件sFile为本地文件,如sFile="Reading.db";sToDir为服务器文件,包含路径,如"/upload/MyReading.db"
//如果目标sToDir不包含路径,将直接传到根目录下。sToDir="MyReading.db"。
bool FtpFile(AnsiString sFile,AnsiString sToDir)
{
bool bFTP=true;
if(!TFile::Exists(sFile)) return false;
AnsiString sServeDir="/",sServeFile;
if(sToDir.AnsiPos("/")>0){
sServeFile=ExtractFileName(sToDir);//获取文件名 C:/ucods/d.doc-->d.doc
sServeDir=StringReplace(sToDir, "/"+sServeFile,"", TReplaceFlags() <<rfReplaceAll<< rfIgnoreCase);//这是路径
}else{
sServeFile = sToDir;
}
TIdFTP *IdFTP=new TIdFTP();
IdFTP->Host = "112.124.XX.XX"; //FTP服务器地址
IdFTP->Passive=true;//如果不用这句,会出现“server cannot accept argument”的错误。
IdFTP->Username= "UserName"; //FTP服务器用户名
IdFTP->Password = "Passwords"; //FTP服务器密码
IdFTP->Port=21;
try{
IdFTP->Connect(); //连接到ftp
IdFTP->ChangeDir(sServeDir); //进入到client子目录
IdFTP->Put(sFile,sServeFile);
}catch(...){
bFTP=false;
}
delete IdFTP;
return bFTP;
}
//---------------------------------------------------------------------------