8 jun
para publicesvfoxpro
Yo lo hago de esta manera.
Lo primero es que uso un campo MEDIUMTEXT o LONGTEXT en MYSQL en SQL SERVER es TEXT
Por ejemplo si la tabla tiene la siguiente estructura :
imagenes ( archivo CHAR(100), imagen MEDIUMTEXT )
1.- Para grabar la imagen sería:
MiArchivo = GETPICT() && GETFILE() también sirve
MiString = STRCONV(FILETOSTR(MiArchivo),13)
MiArchivo = JUSTFNAME(MiArchivo)
SQLEXEC(lnHandle,"INSERT INTO imagenes ( archivo, imagen ) VALUES ( ?MiArchivo, ?MiString )"
RELEASE MiString
2.- Para recuperar la imagen sería:
SQLEXEC(lnHandle,"SELECT archivo, imagen FROM imagenes","consulta")
MiString = STRCONV(consulta.imagen,14)
MiArchivo = ALLTRIM(consulta.archivo)
STRTOFILE(MiString,MiArchivo)
RELEASE MiString
El STRCONV es solo para codificar en BASE64 y no tener caracteres extraños al momento de guardar en MYSQL o cualquier motor SQL
Este procedimiento te sirve para guardar y recuperar cualquier tipo de archivo, ya sean imagenes, Word, Excel, Pdf, etc.
-------------------------------------------------------------------------------------------------------------------------------
10 ago
para publicesvfoxpro
Hola Germán
Ampliando la respuesta de Mapner, es conveniente que los datos sean convertidos a base 64 antes de enviarlos al servidor ( programación defensiva ). El nombre del archivo original es opcional, pero el tipo del archivo es fundamental que lo guardes para que puedas imprimir las imágenes.
*
*-- Método ElegirFoto.Click
*
*-- This.Parent.txtExtArchivoFoto.ControlSource = campo del cursor que tiene la extensión del archivo
*) This.Parent.txtExtArchivoFoto.Visible = .F.
*
*-- This.Parent.edtB64Foto.ControlSource = campo memo del cursor con el contenido del archivo en base 64
*) This.Parent.edtB64Foto.Visible = .F.
*
Local lcExtArchivoFoto, lcNomArchivoFoto, lcB64Foto As String
lcNomArchivoFoto = GETPICT()
If ! Empty( lcNomArchivoFoto )
lcB64Foto = Strconv( Filetostr( lcNomArchivoFoto ), 13 )
lcExtArchivoFoto = Justext( lcNomArchivoFoto )
This.Parent.txtExtArchivoFoto.Value = lcExtArchivoFoto
This.Parent.edtB64Foto.Value = lcB64Foto
This.Parent.imgFoto.PictureVal = Filetostr( lcNomArchivoFoto )
Else
This.Parent.imgFoto.PictureVal = ""
Endif
*
*-------------------------------------------------------------------------------------------------------------
*
*-- Método Refresh del container de la foto
*
Local lcB64Foto, lcStrFoto As String
lcStrFoto = ""
lcB64Foto = This.Parent.edtB64Foto.Value
If ! ( Empty( lcB64Foto ) Or Isnull( lcB64Foto ) )
lcStrFoto = Strconv( lcB64Foto, 14 )
Endif
This.imgFoto.PictureVal = lcStrFoto
*
*-------------------------------------------------------------------------------------------------------------
*
Saludos,
Víctor.