Ver Mensaje Individual
  #2  
Antiguo 19-06-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
deberias primero hacer un List() normal para luego comprobar la estructura de listing de archivos

te paso un codigo a ver si sacas algo en claro, (RUTA_HOSTING es una cadena mia propia donde pongo el directorio, ajustalo como tu veas)

Código:
AnsiString RUTA_HOSTING = "RECROAK_GAME";
Código Delphi [-]
uses
  IdFTP, IdFTPList, IdComponent, SysUtils;

procedure VerificarArchivoFTP(IdFTP1: TIdFTP; const ArchivoABuscar: string);
var
  i: Integer;
  ExisteEnServidor: Boolean;
begin
  ExisteEnServidor := False;

  try
    IdFTP1.Connect;
    IdFTP1.ChangeDir('/'); //Se situa en el Raiz del hosting
    IdFTP1.ChangeDir('RUTA_HOSTING'); // Reemplazá por tu ruta
    IdFTP1.List;

    for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
    begin
      if IdFTP1.DirectoryListing.Items[i].ItemType = ditFile then
      begin
        if AnsiCompareText(IdFTP1.DirectoryListing.Items[i].FileName, ArchivoABuscar) = 0 then
        begin
          ExisteEnServidor := True;
          Break;
        end;
      end;
    end;

    if ExisteEnServidor then
      ShowMessage('El archivo ya existe en el servidor.')
    else
      ShowMessage('El archivo no existe. Se puede subir.');
  // Aquí hacés el Put
  // IdFTP1->Put(".\\data\\Game_Design_Document.pdf");

  finally
    IdFTP1.Disconnect;
  end;
end;

�� Cómo usarlo:
Llamalo así desde un botón, por ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  VerificarArchivoFTP(IdFTP1, 'miarchivo.pdf');
end;

Última edición por navbuoy fecha: 19-06-2025 a las 18:38:24.
Responder Con Cita