Ver Mensaje Individual
  #1  
Antiguo 10-06-2019
Diego E. Diego E. is offline
Miembro
 
Registrado: mar 2018
Posts: 30
Reputación: 0
Diego E. Va por buen camino
Descargar video de FTP Firemonkey

Hola amigos, estoy explorando un tema nuevo para mí que es bajar archivos de un ftp y me encontré con algunos problemas, espero me puedan ayudar.

Estoy realizando una aplicación que requiere mostrar o en su defecto descargar un video .dav de un ftp, ya estuve leyendo algo de información por internet y probando algunos códigos, y aunque en windows funciona al menos un método, al probar con el celular no tengo la misma suerte.

Anexo los códigos(Aportaciones de foristas) de los que me apoye:

Con el siguiente código intentaba abrir la dirección con la forma 'ftp://xxx.xxx.xxx.x/...video.dav', pero al ejecutarlo en el celular me arroja el siguiente mensaje: 'android.content.ActivityNotFoundException: No Activity found to handle Intent {act=android.intent.action.VIEW dat=ftp://xxx.xxx.xxx.x/...}' que supongo yo, se debe a que no inicia con la extensión 'http://' ya que probé abriendo http://www.google.com y si funciona

Código:
Procedure AbrirURLEnChrome(Dir:String);
var   Intent: JIntent;
begin
   Intent := TJIntent.Create;
   Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
   Intent.setData(StrToJURI(Dir));
   SharedActivity.startActivity(Intent);
end;
También probé con el clásico Web Browser, sin embargo dicho componente agrega la extensión http:// antes de mi ftp://..., con lo cual ya no encuentra la dirección y no se si se puede quitar el que se agregue dicha extensión por si sola

Código:
WebBrowser1.Navigate(Dir);
Finalmente probé con:

Código:
Procedure BajarDeFTP();
var
  filename : String;
  idFTP1 : TidFTP;
  FS : TMemoryStream;
  sPath :String;

begin
  FileName := '/video.dav';
  sPath := TPath.Combine(TPath.GetDocumentsPath, 'video.dav');

  IdFTP1 := TidFTP.Create(Nil);
  IdFTP1.Host := 'xxx.xxx.xxx.x';
  IdFTP1.Username := '***';
  IdFTP1.Password := '***';
  IdFTP1.Passive := True;

  IdFTP1.ConnectTimeout := 6000;
  Fs := TMemoryStream.Create;
  try
    IdFTP1.Connect;
    try
      IdFTP1.TransferType := ftBinary;
      IdFTP1.Get(FileName, FS);
      FS.Position := 0;
      FS.SaveToFile(sPATH);
    finally
      IdFTP1.Disconnect;
    end;

  finally
    Fs.Free;
  end;
 //if FileExists(sPath) then   ShowMessage('Existe');
 end;
Cuyo resultado al parecer es positivo ya que no me arroja una excepción en un try que agregué, pero al buscar el archivo no logro encontrarlo en mi teléfono.

Después de tanto choro, viene la pregunta, alguno sabe como puedo descargar dicho video(método nuevo o usando alguno de los métodos anteriores) del ftp o mejor aún, mostrarlo directamente en la app(tomando en cuenta que el formato es .dav). Gracias por su ayuda.
Responder Con Cita