Ver Mensaje Individual
  #4  
Antiguo 02-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por petete2008 Ver Mensaje
y puedo decirle que la imagen está en c:\imagenes\image.jpg y que la coja directamente de allí en vez de cargarla?
Ademas mi idea es que tambien pueda adjuntar ficheros txt, pdf, word, etc... y no sólamente imágenes.
En ese caso (más genérico) es mejor trabajar directamente con Streams para cualquier tipo de fichero y así los cargas directamente de disco.
Seguramente en tu tabla deberás tener algun campo para almacenar el nombre o el tipo del fichero original, para así después poderlo recuperar correctamente.

Para guardar un fichero en un campo de una tabla (TADOTable en este caso, con un campo definido como IMAGE) puedes usar esto:

Código Delphi [-]
var
  bs: TStream;
begin
  // editar el registro actual
 tbl1.Edit;
 // Acceder al campo BLOB (el campo IMAGE se llama blob)
 bs := tbl1.CreateBlobStream(tbl1.FieldByName('blob'), bmWrite);
 // Cargar el fichero de disco 
 TADOBlobStream(bs).LoadFromFile('c:\temp\fichero.pdf');
 // Al hacer el Free directamente se graba el campo
 bs.Free;

Para volver a guardar ese campo en disco (fichero) algo como esto:

Código Delphi [-]
var
  bs: TStream;
begin
  // Apuntar al campo BLOB (registro actual)
  bs := tbl1.CreateBlobStream(tbl1.FieldByName('blob'), bmReadWrite);
  // Grabar a disco
  TADOBlobStream(bs).SaveToFile('c:\temp\fichero_out.pdf');
  // liberar
  bs.Free;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita