Delphi FTP dosya gönderme
function TAnaF.FtpDosyaGonder (IdFTP : TIdFTP; SrcDosya, DesDosya:TFileName; RemoteDir: String;FtpAdr,FtpUser,FtpSifre:String ):string;
var
  FtpC: TIdFTP;
  yil: Word;
  ay: Word;
  gun: Word;
begin
  DecodeDate(date,yil,ay,gun);
  FtpC := TIdFTP.Create(Self);
  Result := '';
  with FtpC do
  Begin
    Disconnect;

    AutoLogin     :=  IdFTP.AutoLogin;
    AutoIssueFEAT := IdFTP.AutoIssueFEAT;
    IPVersion     := IdFTP.IPVersion;
    TransferType  := IdFTP.TransferType;
    ReadTimeout   := IdFTP.ReadTimeout;
    ListenTimeout := IdFTP.ListenTimeout;
    Passive       := IdFTP.Passive;

    Host      := FtpAdr;
    Username  := FtpUser;
    Password  := FtpSifre;
    Connect;
  End;

     Application.ProcessMessages;
  If FtpC.Connected then
  begin
    FtpC.ChangeDir(RemoteDir);

     try
        FtpC.MakeDir(RemoteDir+'/'+yil.ToString);     // Klasör oluşturmayı dene
        FtpC.ChangeDir(RemoteDir+'/'+yil.ToString);  // oluşturulan klasöre bağlan
      except
        FtpC.ChangeDir(RemoteDir+'/'+yil.ToString); // eğer klasör varsa klasöre git 
      end;

    Try
      Application.ProcessMessages;
 //     FtpC.TransferType := ftBinary; // Uses kısmına IdFTPCommon
 eklenmeli
      FtpC.Put(DesDosya,SrcDosya, False);
    Finally
      Result := SiteURL.Text+'/'+yil.ToString+'/'+SrcDosya; //gönderilen yıl bazlı klasöre yükler
      FtpC.Quit;
    end;
        Application.ProcessMessages;
  end;
  FtpC.Disconnect;
  FreeAndNil(FtpC);


end;

Kullanımı

procedure TAnaF.Button1Click(Sender: TObject);
var
    dosya: string;
    Mesaj: string;
begin
  dosya :='0860472212.png';
  Mesaj := FtpDosyaGonder(FtpConnection,dosya,TempFileYolu + dosya,FtpYol.Text,FTPAdres.Text,FtpKullanici.Text,FtpSifre.Text);
  ShowMessage(Mesaj);
end;