PDA

Ver la Versión Completa : Indy Ftp por transacciones


onaikul
14-02-2007, 21:30:40
Hola a todos estoy usando el componente IdFTP de indy pra subir unos archivos a un servidor y al mismo tiempo dar de alta registros en una tabla.
El tema es que quiero que si algo sale mal hechar todo para atras, o sea hacerlo como si fuese una transaccion.
Para la base de datos no tengo problema tengo manejo de transacciones pero como puedo hacer lo mismo con el componente de FTP ?

el problema principalmente lo tengo si yo primero borro archivos del servidor borro registros de una tabla que le hacen referencia y todo eso sale bien, pero la siguiente accion salta una excepcion vuelvo la tabla como estaba pero los archivos ya no los tengo....

Vi que hay unos metodos OpenWritebuffer FlushWriteBuffer pero creo son para otras cosas...

Alguna sugerengia?....

maxid
14-02-2007, 21:39:41
Hola, creo que la solucion mas util seria, si los archivos no son muy grandes los cargues en un memo de la tabla. Lo ideal es que uses una base de datos buena como firebird no (paradox), de ese modo cuando haces un rollback perdes tambien el stream del archivo.

onaikul
14-02-2007, 21:44:05
Maxid, muchas graicas por contestar, pero por cuestiones de requerimientos, los archivos tienen que quedar en archivos, no puedo subirlos a la base.
Tenes idea si existe algo como lo que necesito?.
Muchas gracias

maxid
16-02-2007, 14:59:37
Pero no te hagas drama por eso, cuando vos concideras que la transacion termino con exito, bajas el stream de la base de datos creas el archivo fisico en disco y borras el registro que usas de modo temporal, eso te puede servir para hacer subidas de a bloques, dividiendo los archivos a subir y hacer transacciones mas chicas y seguras.
podes crear como un emule propio.
Ejemplo:
Empezas la transaccion con los datos del archivo:idTransaccion, nombre, tamaño, cantidad de bloques, etc. creas la cantidad de registros como bloques deben ser, empezas a subir a cada registro su bloque con un trigrer podes verificas cuando termina cada bloque si falta aguno por terminar y si estan todos listos creas el archivo y borras todas las filas para el idTansaccion numero "x". siempre y cuando el aarchivo se haya podido crear.

onaikul
16-02-2007, 18:10:01
Barbaro, me parece bien lo que no entiendo es lo siguiente, no tengo problemas en subir el archivo entero de una a un campo de una tabla, pero despues cuando termino, hago el post, y como bajo el archivo en ese campo a un directorio del servidor ?.