PDA

Ver la Versión Completa : Subir Documento


zuritavic
15-02-2017, 00:54:17
Lo que estoy intentando es hacer una aplicacion donde puedan subir fotos en formato ftp a un servidor, antes lo hacia con el componente SaveDialog pero en firemonkey ese componente no me deja utilizarlo que alternativa puedo usar para poder subir las fotos?

utilizo delphi xe7 y la aplicacion es en android.

Casimiro Notevi
15-02-2017, 01:08:44
Creo que estás confundido, ni existen las fotos con formato ftp, ni con el savedialog subes fotos a un servidor ftp.

zuritavic
15-02-2017, 01:29:43
yo utilizo este codigo para subir documentos ftp en delphi xe7

procedure TfrmFacturaPorPargarTotal.btSubirFTPClick(Sender: TObject);
var
archivoSubir,
documento,
extension,
Nombre_Virtual :string;
Id_Doc2 : integer;
resultado : STRING;
respuesta : integer;


begin



if qrDocumentos.fieldbyname('Documento').asstring <> '' then
begin
respuesta := MessageDlg('Desea sobre escribir el documento?'+qrDocumentos.fieldbyname('Documento').asstring, mtConfirmation, [mbYes, mbNo],0);

if respuesta = mrNo then
begin
exit;
end;

end;
savedialog1.DefaultExt := '*.'+qrDocumentos.fieldbyname('Tipo_Documento').value;
savedialog1.FileName := '*.'+qrDocumentos.fieldbyname('Tipo_Documento').value;

if savedialog1.Execute then
begin
if dm.ftpParametros then

begin

documento:= extractFilename(SaveDialog1.FileName);
extension := ExtractFileExt( SaveDialog1.FileName) ;
archivoSubir := SaveDialog1.FileName ;
dm.DevuelveNombre.Prepared := true;
dm.DevuelveNombre.ExecProc;
Nombre_Virtual:= dm.DevuelveNombre.Parameters.ParamByName('@nomVirtual').value;
Nombre_Virtual := Nombre_Virtual+ extension;



subirFTP(archivoSubir,Nombre_Virtual,'embarquepro.com'//--dm.FTP_URL
,'',dm.FTP_USERNAME,dm.FTP_PASSWORD ,strToint(dm.FTP_PUERTO),resultado);
if resultado = 'OK' then
begin

dm.spInsDoc.Prepared := true;

dm.spInsDoc.Parameters.ParamByName('@Documento').value := documento;
dm.spInsDoc.Parameters.ParamByName('@Nombre_Virtual').value := Nombre_virtual;
dm.spInsDoc.Parameters.ParamByName('@F_Recibido').value := now;
dm.spInsDoc.Parameters.ParamByName('@Creado_por').value := id_usuario;

dm.spInsDoc.ExecProc;
Id_Doc2 := dm.spInsDoc.Parameters.ParamByName('@Id_Doc2').value;
//dm.spInsDoc.Parameters.ParamByName('@VValor_Mensaje int out,
// dm.spInsDoc.Parameters.ParamByName('@VMensaje varchar(200) out


dm.spUp_Fm_Facturas_Por_Pagar_Doc.Prepared := true;
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@Id').value := qrDocumentos.fieldbyname('Id').value;
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@Id_Documento').value := Id_Doc2;
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@Comentario').value := 'Cargado desde version windows';
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@contador').value := 1;

dm.spUp_Fm_Facturas_Por_Pagar_Doc.ExecProc;
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@VValor_Mensaje').value;
dm.spUp_Fm_Facturas_Por_Pagar_Doc.Parameters.ParamByName('@VMensaje').value;

end
else
begin
showmessage('erro en el FTP');
end ;
qrDocumentos.Close;
qrDocumentos.open;


end;

end;



end;

AgustinOrtu
15-02-2017, 04:37:29
Ahi mas que FTP parece que estas usando algo con acceso a base de datos (procedimiento almacenado, juzgando a simple vista)

Con respecto al SaveDialog fijate si esto (http://www.fmxexpress.com/launch-android-intent-file-dialog-and-get-the-result-in-delphi-xe7-firemonkey-on-android/) te puede servir

Este hilo (http://www.clubdelphi.com/foros/showthread.php?t=89955) tambien parece arrojar algo de luz

Neftali [Germán.Estévez]
15-02-2017, 09:36:19
Creo que estás confundido, ni existen las fotos con formato ftp, ni con el savedialog subes fotos a un servidor ftp.

En ese código que has añadido hay varias cosas, pero al igual que Casimiro, creo que te estás haciendo un lío.
Lo que parece que estás haciendo ahí es lo siguiente:

1) Seleccionar un fichero de disco que será el que vas a subir al FTP (eso se hace con el componente TSaveDialog)
2) Una vez que tienes el nombre del fichero, ejecutas el procedimiento subirFTP, que imagino (echándole mucha inventiva) que lo que hace es subir el fichero seleccionado (archivoSubir) a un servidor FTP.
3) Al final, tal y como apunta Agustín, si el fichero se ha subido correctamente (if resultado = 'OK') se hacen unas cosas en la Base de Datos.

Tu primer problema, es que Android no implementa dialogos nativos para acceder a los ficheros, por lo tanto FireMonkey no puede llamar esos diálogos.
La única forma de hacer algo similar a lo que hace el TSaveDialog/TOpenDialog para Android, es que tú construyas tus propios diálogos. Tarea que no es fácil.

Lo siguente es subir el fichero al FTP, pero imagino que ese procedimiento usa las Indy, por lo que debería funcionar sin mayores problemas desde Android.