Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Subida FTP carpeta pictures - error de formato (https://www.clubdelphi.com/foros/showthread.php?t=96759)

jmbarrio 26-06-2024 11:50:49

Subida FTP carpeta pictures - error de formato
 
Buenos días, estoy realizando una subida por FTP de la carpeta pictures de fotos en formato jpg.
Las fotos suben sin ningún problema al servidor, pero al abrirlas en el PC me da error de formato.
En el dispositivo android esas mismas fotos se ven sin problema. El código utilizado es el siguiente
El código utilizado es el siguiente:

Código Delphi [-]
procedure TF_Captura.Button1Click(Sender: TObject);
var
  FTP: TIdFTP;
  FileList: TStringDynArray;
  FileName, FolderPath: string;
begin
  FTP := TIdFTP.Create(nil);
  try
    // Configura el FTP
    FTP.Host := F_Config.edServidorFTP.Text;
    FTP.Username := F_Config.edUsuario.Text;;
    FTP.Password := F_Config.edPassword.Text;;
    FTP.Connect;
    FolderPath := TPath.Combine(TPath.GetSharedPicturesPath, '');
    // Lista todos los archivos en la carpeta
    FileList := TDirectory.GetFiles(FolderPath, 'foto_tomada*.*', TSearchOption.soTopDirectoryOnly);
    // Sube cada archivo
    for FileName in FileList do
    begin
      FTP.Put(FileName, ExtractFileName(FileName));
    end;
    ShowMessage('Subida completada');
  finally
    FTP.Disconnect;
    FTP.Free;
  end;
end;

No sé sí me falta configurar algo mas en el componente FTP.
¿Alguna idea?

Muchas gracias, saludos.

Casimiro Notevi 26-06-2024 12:14:51

¿Y qué formato tienen las fotos?
Ya, jpg, pero ¿has comprobado que las imágenes subidas estén correctas y tenga la cabecera jpg?

Neftali [Germán.Estévez] 26-06-2024 12:23:45

Normalmente al conectar y enviar/recibir fichero de un FTP, se puede definir si los ficheros son texto o binarios.
Revisa esa propiedad (TransferType) en el TIdFTP o cámbiala a ver si obtienes mejores resultados.

duilioisola 26-06-2024 12:27:36

Prueba configurando la transmisión como tipo datos binarios.

Código Delphi [-]
  FTP := TIdFTP.Create(nil);
  try
    // Configura el FTP
    FTP.Host := F_Config.edServidorFTP.Text;
    FTP.Username := F_Config.edUsuario.Text;;
    FTP.Password := F_Config.edPassword.Text;;
    FTP.TransferType := ftBinary;
    FTP.Connect;
    [...]

jmbarrio 26-06-2024 13:28:48

Gracias a todos por la ayuda.

Los ficheros tanto en el android como en el servidor van con la extensión jpg y en el móvil se ven perfectamente

Había visto lo del transfertype, pero

Código Delphi [-]
FTP.TransferType := ftBinary;

no me compila, me da undeclared identifier ftBinary.

No se si me falta alguna unidad en el uses o lo tengo que declarar de alguna manera. De ahí mi petición de ayuda.

Saludos.

Casimiro Notevi 26-06-2024 14:08:49

De forma predeterminada, si no me equivoco, se añaden al uses:

IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP

jmbarrio 26-06-2024 16:15:35

Buenas tardes, ya he dado con la solución.
El componente FTP lo creaba en tiempo de ejecución y así no me funcionaba FTP.TransferType := ftBinary no se muy bien porqué.
En lugar de en tiempo de ejecución me he creado en diseño en el formulario el componente FTP y ahí en la propiedad TransferType si que me deja poner el ftBinary.
De esta manera ya veo bien los jpg en el servidor.

Gracias a todos por vuestra ayuda.


La franja horaria es GMT +2. Ahora son las 13:43:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi