Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Debates (https://www.clubdelphi.com/foros/forumdisplay.php?f=29)
-   -   ¿Archivos adjuntos dentro o fuera? (https://www.clubdelphi.com/foros/showthread.php?t=73555)

Casimiro Noteví 05-05-2011 13:36:32

Pues tal y como están las cosas... lo mismo te va mejor que la informática :)

Ya en serio, lo que ocurre es que estas cosas son fruto de la experiencia, porque son situaciones que se han vivido/sufrido antes, y cuando llega un caso similar entonces acabas haciendo estas cosas casi sin pensarlas, muchas veces no recuerdas bien el motivo de que algo sea mejor hacerlo de una forma o de otra, pero sí que recuerdas que era mejor de una forma en particular. Luego, sobre la marcha, vas recordando por qué seleccionaste un método y no el otro.

Por ejemplo, en el caso de nuestros clientes que usan métodos de firmas con esos aparatitos como los de mercadona, el corte inglés, etc. no sólamente hay que guardar la firma, es que además hay que cifrarla y controlar que no ha sido modificada, para que ningún usuario con malas ideas se le ocurra coger algunas firmas, hacer unas compras y simular que el comprador ha sido un cliente cualquiera, tendría fácil decir: "ahí está tu firma", en fin, se formaría un buen lio. Por eso, las firmas no son posible de extraer de la base de datos, sólo se imprimen conjuntamente con sus documentos originales firmados por los clientes. Y en el caso de que consiguieran extraerla "independientemente" para usarla ilícitamente, ésta firma está inusable, ya digo, cifrada, encriptada, camuflada, retorcida, alterada, distorsionada y no se puede usar.
Imagina que tienes en el disco los ficheritos .jpg de las firmas de los clientes al alcance de los usuarios, qué miedo. Además es ilegal, ya sabes, lo de "protección de datos" y todo ese tema.

newtron 05-05-2011 13:53:23

Muy cierto. Lo que me lleva a volver a pensar que como ya se ha dicho en este hilo todo depende del uso que se le vaya a dar a las imágenes, de la cantidad de ellas, la capacidad que ocupen, el grado de seguridad que se necesite, etc, etc.

Casimiro Noteví 05-05-2011 13:56:12

Cita:

Empezado por newtron (Mensaje 399013)
Muy cierto. Lo que me lleva a volver a pensar que como ya se ha dicho en este hilo todo depende del uso que se le vaya a dar a las imágenes, de la cantidad de ellas, la capacidad que ocupen, el grado de seguridad que se necesite, etc, etc.

Totalmente de acuerdo :)

newtron 06-05-2011 10:09:37

Cita:

Empezado por Casimiro Notevi (Mensaje 398988)
...cuando es una imagen se puede abrir directamente, creo recordar que usando TStream o TFileStream (tendría que mirarlo)

¿Eso es posible?, de esa forma me ahorraría el grabar el archivo en disco para poder abrirlo con el programa predeterminado de "guindoun"

gluglu 06-05-2011 10:34:16

Si fueran imágenes JPG o BMP :

Código Delphi [-]
var
  Jpg       : TJpegImage;
...
begin
    Jpg := TJpegImage.Create;
    try
      Jpg.Assign(pDataSet2.FieldByName('PHOTO'));
      Image1.Picture.Assign(Jpg);
    finally
      Jpg.Free;
    end;

siendo Image1 un TImage.

newtron 06-05-2011 10:43:35

Amigo gluglu.

Gracias por tu aportación pero yo lo que quiero es abrir con el programa predeterminado de "guindoun" una imagen guardada en un stream en la base de datos sin tener que crear el fichero previamente que es lo que Casimiro comentaba que se podía hacer.

Saludos

Neftali [Germán.Estévez] 06-05-2011 11:00:40

Cita:

Empezado por newtron (Mensaje 399013)
Lo que me lleva a volver a pensar que como ya se ha dicho en este hilo todo depende del uso que se le vaya a dar a las imágenes, de la cantidad de ellas, la capacidad que ocupen, el grado de seguridad que se necesite, etc, etc.

+1
+1
+1

:):)

newtron 06-05-2011 11:13:12

Cita:

Empezado por Neftali (Mensaje 399167)
+1
+1
+1

:):)

.... ¿mande?

Neftali [Germán.Estévez] 06-05-2011 11:58:25

Cita:

Empezado por newtron (Mensaje 399168)
.... ¿mande?

Eso significa que estoy de acuerdo (muy de acuerdo) con lo que has dicho. ;)

newtron 06-05-2011 12:05:54

Cita:

Empezado por Neftali (Mensaje 399169)
Eso significa que estoy de acuerdo (muy de acuerdo) con lo que has dicho. ;)

ahhhhhhhh... es que a mi eso del binario..... :p

Casimiro Noteví 06-05-2011 12:08:37

Cita:

Empezado por newtron (Mensaje 399168)
.... ¿mande?

Que está de acuerdo con lo que opinas, por eso se suma él también a esas opiniones (+1) :)

Edito: ahora veo que te ha contestado neftalí.

Casimiro Noteví 06-05-2011 12:22:28

Cita:

Empezado por newtron (Mensaje 399161)
¿Eso es posible?, de esa forma me ahorraría el grabar el archivo en disco para poder abrirlo con el programa predeterminado de "guindoun"

No, de esa forma lo puedes presentar desde tu programa delphi, en un timage, por ejemplo, o con el código que ha puesto el amigo gluglu, te ahorrarías de guardar el fichero en disco.
Pero si quieres abrirlo con el programa predeterminado de windows entonces necesitas que exista el fichero en disco.
Seguramente se pueda hacer lo que dices, no sé, quizás guardándolo en memoria y luego "pegarlo" al programa externo que quieras, pero no sé si vale la pena complicarse tanto, si es rápido y fácil guardarlo en un directorio temporal y llamarlo para abrirlo, ya se encarga windows de elegir el programa que tengas seleccionado para esa extensión.
De todas formas mis conocimientos son bastante escasos y puede que alguien diga que se puede y además de forma fácil, yo la desconozco.

newtron 06-05-2011 12:36:25

Ok.

Ya lo grabo entonces en el disco para visualizarlo.

Amigo Casimiro, al final me he decidido en esta aplicación a meter las imágenes en la base de datos pero que sepas que como no me vaya bien me apareceré todas las noches en los pies de tu cama aullando.... streeeeeeeammmmm.... streeeeeeeeeammmmmm.... :p

fjcg02 06-05-2011 12:45:14

Pasé por este tema, opté por grabar las imágenes en la bbdd ( firebird) y me va bien. Tampoco tengo demasiado tamaño.

Lo que sí hago es
comprimir el fichero antes de guardarlo en la bbdd y descomprimirlo a la hora de extaerlo.
Utilizar una sola tabla sólo para los ficheros. En la tabla de registro, sólo se guardan id's, fechas, usuario que inserta, tipo de fichero, ... A la tabla de los ficheros sólo se accede cuando es necesario, es decir, cuando se quiere leer un fichero. Es para que las consultas vayan rapiditas.

Saludos

newtron 06-05-2011 12:59:06

Cita:

Empezado por fjcg02 (Mensaje 399176)
Pasé por este tema, opté por grabar las imágenes en la bbdd ( firebird) y me va bien. Tampoco tengo demasiado tamaño.

Lo que sí hago es
comprimir el fichero antes de guardarlo en la bbdd y descomprimirlo a la hora de extaerlo.
Utilizar una sola tabla sólo para los ficheros. En la tabla de registro, sólo se guardan id's, fechas, usuario que inserta, tipo de fichero, ... A la tabla de los ficheros sólo se accede cuando es necesario, es decir, cuando se quiere leer un fichero. Es para que las consultas vayan rapiditas.

Saludos

Si, esa es la idea. La base de datos que yo uso permite guardar los streams con un ratio de compresión configurable así que me ahorro comprimir y descomprimir.

Casimiro Noteví 06-05-2011 13:12:34

Cita:

Empezado por newtron (Mensaje 399175)
Ok.
Ya lo grabo entonces en el disco para visualizarlo.
Amigo Casimiro, al final me he decidido en esta aplicación a meter las imágenes en la base de datos

Además de lo propuesto por gluglu, también puedes usar algo parecido a esto:

Código Delphi [-]
procedure TFrameDocumentosEscaner.grImagenesChangeNode;
var
  S : TStream;
begin
  inherited;
  S := nil;
  Image1.Picture.Graphic := nil;
  //
  if (grImagenes.Focused) then
  begin
    if not qrImagenes.FieldByName('IMAGEN').IsNull then
    begin
      try                
        S := qrImagenes.CreateBlobStream(qrImagenes.FieldByName('imagen') as TBlobField, bmRead);
        Image1.Picture.Graphic := TJpegImage.create;
        Image1.picture.graphic.loadfromStream( S );                
      finally
        S.Free;
      end;
    end;
  end;
end;

Cita:

Empezado por newtron (Mensaje 399175)
pero que sepas que como no me vaya bien me apareceré todas las noches en los pies de tu cama aullando.... streeeeeeeammmmm.... streeeeeeeeeammmmmm.... :p

uuummm.... ahora que lo pienso, la mejor opción es guardar los ficheros fuera de la base de datos :D

newtron 06-05-2011 13:31:13

Ok.

Ya está el tema claro y decidido.

Gracias a todos por vuestros comentarios. :)

rretamar 23-05-2011 19:06:46

En Barrapunto justamente hoy se habla de este tema. Sacando el trolleo de siempre, hay comentarios muy interesantes:

http://barrapunto.com/article.pl?sid...41236&from=rss

newtron 23-05-2011 19:48:40

Cita:

Empezado por rretamar (Mensaje 400993)
En Barrapunto justamente hoy se habla de este tema. Sacando el trolleo de siempre, hay comentarios muy interesantes:

http://barrapunto.com/article.pl?sid...41236&from=rss

Cierto, y he posteado este hilo por si a alguno de ellos le interesa lo que aquí chafardeamos. :D

Casimiro Noteví 23-05-2011 20:23:47

Bien hecho, que aprendan algo :D
Es broma, no se enfaden :)

Neftali [Germán.Estévez] 24-05-2011 11:15:13

Ya les he dado la solución; Si es que es muy fácil:

DEPENDE, DEPENDE, DEPENDE,....

:):):D

newtron 24-05-2011 11:25:35

Cita:

Empezado por Neftali (Mensaje 401102)
Ya les he dado la solución; Si es que es muy fácil:

DEPENDE, DEPENDE, DEPENDE,....

:):):D

¡Tú si que sabes!, así se sabe de todo, cuando te pregunten dices...DEPENDE... y a volar. :p


La franja horaria es GMT +2. Ahora son las 09:51:56.

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