Ejemplo de como subir archivos en una base de datos, en este caso PostgreSQL.
Muchas veces nos encontramos con la necesidad de guardar archivos en el servidor para disponibilidad de los usuarios de nuestra aplicación.
La acostumbrada ruta aleatoria del archivo en una base de datos y su posterior copiado en el mismo muchas veces no sera aplicable mas aun cuando nuestra base de datos se encuentra en un servidor remoto donde no disponemos de accesos a sus recursos
Aquí es cuando surge la necesidad de cambiar la estrategia de almacenamiento de estos objetos grandes en campos de la base de datos el ejemplo utiliza un campo tipo text equivalente a un campo memo de una dbf.
Lo primero es convertir nuestro archivo a base 64 para poder almacenarlo y lo hacemos con las siguientes lineas :
nfile = GETFILE() ** convertimos a base 64 wbase64 = strconv(filetostr(nfile),13) ** almacenamos en la base de datos sqlexec(1,"insert into sistema.multimedia (objeto,nombre) values (? wbase64,?justfname(nfile))","rta") ** para descargar el archivo usaramos la siguiente sintaxis sqlexec(1,"select * from sistema.multimedia where ide=1","rta") _rutarchivo = SYS(5) + "\" + ALLTRIM(rta.nombre) sele rta strtofile(STRCONV(rta.objeto,14),_rutarchivo) ** y lo podemos abrir con el programa asociado oShell = CreateObject("WScript.Shell") oShell.Run(_rutarchivo,2,.f.)
mgx
Pueden descargar más ejemplos desde http://www.mediafire.com/file/3elusl45hwab0v5/VfpBin2PGlo.zip/file, aquí también se muestra como guardar en columnas tipo bytea (blob en otros motores).
ResponderBorrar