Hola!
Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o ficheros
rtf en un tabla mysql.
Ojo, no me vale usar DataControls ni DataSets. Tiene que ser directamente
con el el DataSource, con una llamada a oMySqlDatasource:Execute.
Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
oMySqlQuery1:Execute("Update documentos set texto='"+::oRichEdit1:cText+"'
where codigo=1")
He probado absolutamente todo lo que se me ha ocurrido y MySql se empeña
en quitarme las y no te digo nada cuando hay comillas o símbolos aún más
raros.
Por supuesto el campo es un blob, y tal y tal.
Al final lo he conseguido, pero a costa de usar mime para la codificación
a través de un ocx que además es de pago.
¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
permita usar base64, se pueda usar en Xailer y sea gratuita.
1 Saludico,
Fredy
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Mysql y guardar imagenes, rtf, etc...
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Mysql y guardar imagenes, rtf, etc...
On 4/29/2011 8:40 PM, Fredy wrote:
> Hola!
>
> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
> ficheros rtf en un tabla mysql.
> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
> directamente con el el DataSource, con una llamada a
> oMySqlDatasource:Execute.
>
> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
> oMySqlQuery1:Execute("Update documentos set
> texto='"+::oRichEdit1:cText+"' where codigo=1")
>
> He probado absolutamente todo lo que se me ha ocurrido y MySql se empeña
> en quitarme las y no te digo nada cuando hay comillas o símbolos aún
> más raros.
> Por supuesto el campo es un blob, y tal y tal.
>
> Al final lo he conseguido, pero a costa de usar mime para la
> codificación a través de un ocx que además es de pago.
>
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
>
> 1 Saludico,
> Fredy
>
>
Hola Fredy:
Me puedes mandar alguna imagen (archivo) de las que deseas grabar, para
hacer pruebas.
yo tengo algo hecho para grabar archivos PFDs en Campos BLOB.
Saludos...
> Hola!
>
> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
> ficheros rtf en un tabla mysql.
> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
> directamente con el el DataSource, con una llamada a
> oMySqlDatasource:Execute.
>
> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
> oMySqlQuery1:Execute("Update documentos set
> texto='"+::oRichEdit1:cText+"' where codigo=1")
>
> He probado absolutamente todo lo que se me ha ocurrido y MySql se empeña
> en quitarme las y no te digo nada cuando hay comillas o símbolos aún
> más raros.
> Por supuesto el campo es un blob, y tal y tal.
>
> Al final lo he conseguido, pero a costa de usar mime para la
> codificación a través de un ocx que además es de pago.
>
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
>
> 1 Saludico,
> Fredy
>
>
Hola Fredy:
Me puedes mandar alguna imagen (archivo) de las que deseas grabar, para
hacer pruebas.
yo tengo algo hecho para grabar archivos PFDs en Campos BLOB.
Saludos...
-
- Mensajes: 360
- Registrado: Mié Dic 03, 2008 5:05 am
Mysql y guardar imagenes, rtf, etc...
On 4/29/2011 8:40 PM, Fredy wrote:
> Hola!
>
> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
> ficheros rtf en un tabla mysql.
> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
> directamente con el el DataSource, con una llamada a
> oMySqlDatasource:Execute.
>
> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
> oMySqlQuery1:Execute("Update documentos set
> texto='"+::oRichEdit1:cText+"' where codigo=1")
>
> He probado absolutamente todo lo que se me ha ocurrido y MySql se empeña
> en quitarme las y no te digo nada cuando hay comillas o símbolos aún
> más raros.
> Por supuesto el campo es un blob, y tal y tal.
>
> Al final lo he conseguido, pero a costa de usar mime para la
> codificación a través de un ocx que además es de pago.
>
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
>
> 1 Saludico,
> Fredy
>
>
Fredy hola:
mandame por favor un archivo de los que quieres grabar en mysql .
Saludos...
> Hola!
>
> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
> ficheros rtf en un tabla mysql.
> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
> directamente con el el DataSource, con una llamada a
> oMySqlDatasource:Execute.
>
> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
> oMySqlQuery1:Execute("Update documentos set
> texto='"+::oRichEdit1:cText+"' where codigo=1")
>
> He probado absolutamente todo lo que se me ha ocurrido y MySql se empeña
> en quitarme las y no te digo nada cuando hay comillas o símbolos aún
> más raros.
> Por supuesto el campo es un blob, y tal y tal.
>
> Al final lo he conseguido, pero a costa de usar mime para la
> codificación a través de un ocx que además es de pago.
>
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
>
> 1 Saludico,
> Fredy
>
>
Fredy hola:
mandame por favor un archivo de los que quieres grabar en mysql .
Saludos...
Mysql y guardar imagenes, rtf, etc...
Fredy,
en xHarbour había alguna función para convertir a base64, busca por
hb_base64 en los fuentes.
Saludos,
José Lalín
en xHarbour había alguna función para convertir a base64, busca por
hb_base64 en los fuentes.
Saludos,
José Lalín
Mysql y guardar imagenes, rtf, etc...
Hola José,
Tengo dos problemas con hb_base64
Que es un poco lenta y que por mucho que he buscado creo que no hay una función
para decodificar
1 Saludico,
Fredy
> Fredy,
>
> en xHarbour había alguna función para convertir a base64, busca por
> hb_base64 en los fuentes.
>
> Saludos,
> José Lalín
Tengo dos problemas con hb_base64
Que es un poco lenta y que por mucho que he buscado creo que no hay una función
para decodificar
1 Saludico,
Fredy
> Fredy,
>
> en xHarbour había alguna función para convertir a base64, busca por
> hb_base64 en los fuentes.
>
> Saludos,
> José Lalín
Mysql y guardar imagenes, rtf, etc...
Hola Martin,
Estoy usando un documento escrito en wordpad y guardado en formato rtf que
dice : Esto es un documento escrito en wordpad.
Con los jpg puedes probar con el xailer.jpg que viene con el propio xailer.
Te dejo un pdf con los resultados que obtengo en http://hotfile.com/dl/116584049/39789ed ... o.pdf.html
El problema es que para hacer un insert o update desde código de un fichero
binario o con formato extraño, típicos de los campos blob tenemos que llamar
a execute pasándole una cadena de TEXTO y el contenido de la variable a utilizar
tiene caracteres no válidos para dicha cadena de texto, por eso la única
solición que veo es convertirlo mediante mime a algo que sí sea válido para
una cadena de texto.
Es el mismo problema que tienen los servidores de correo o los grupos de
noticias como este para guardar los ficheros adjuntos y terminan codificando
en base64 o alguno parecido, que lo transforma todo a letras y números. La
duda es lo larga que puede llegar a ser una cadena de texto que se le pase
al execute.
1 Saludico,
Fredy
> On 4/29/2011 8:40 PM, Fredy wrote:
>
>> Hola!
>>
>> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
>> ficheros rtf en un tabla mysql.
>> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
>> directamente con el el DataSource, con una llamada a
>> oMySqlDatasource:Execute.
>> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
>> oMySqlQuery1:Execute("Update documentos set
>> texto='"+::oRichEdit1:cText+"' where codigo=1")
>>
>> He probado absolutamente todo lo que se me ha ocurrido y MySql se
>> empeña
>> en quitarme las y no te digo nada cuando hay comillas o símbolos
>> aún
>> más raros.
>> Por supuesto el campo es un blob, y tal y tal.
>> Al final lo he conseguido, pero a costa de usar mime para la
>> codificación a través de un ocx que además es de pago.
>>
>> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx
>> que permita usar base64, se pueda usar en Xailer y sea gratuita.
>>
>> 1 Saludico,
>> Fredy
> Fredy hola:
>
> mandame por favor un archivo de los que quieres grabar en mysql .
>
> Saludos...
>
Estoy usando un documento escrito en wordpad y guardado en formato rtf que
dice : Esto es un documento escrito en wordpad.
Con los jpg puedes probar con el xailer.jpg que viene con el propio xailer.
Te dejo un pdf con los resultados que obtengo en http://hotfile.com/dl/116584049/39789ed ... o.pdf.html
El problema es que para hacer un insert o update desde código de un fichero
binario o con formato extraño, típicos de los campos blob tenemos que llamar
a execute pasándole una cadena de TEXTO y el contenido de la variable a utilizar
tiene caracteres no válidos para dicha cadena de texto, por eso la única
solición que veo es convertirlo mediante mime a algo que sí sea válido para
una cadena de texto.
Es el mismo problema que tienen los servidores de correo o los grupos de
noticias como este para guardar los ficheros adjuntos y terminan codificando
en base64 o alguno parecido, que lo transforma todo a letras y números. La
duda es lo larga que puede llegar a ser una cadena de texto que se le pase
al execute.
1 Saludico,
Fredy
> On 4/29/2011 8:40 PM, Fredy wrote:
>
>> Hola!
>>
>> Alguien ha podido, o tiene un ejemplo de cómo guardar imágenes o
>> ficheros rtf en un tabla mysql.
>> Ojo, no me vale usar DataControls ni DataSets. Tiene que ser
>> directamente con el el DataSource, con una llamada a
>> oMySqlDatasource:Execute.
>> Si por ejemplo tengo un ::oRichEdit1, hay que hacer así como
>> oMySqlQuery1:Execute("Update documentos set
>> texto='"+::oRichEdit1:cText+"' where codigo=1")
>>
>> He probado absolutamente todo lo que se me ha ocurrido y MySql se
>> empeña
>> en quitarme las y no te digo nada cuando hay comillas o símbolos
>> aún
>> más raros.
>> Por supuesto el campo es un blob, y tal y tal.
>> Al final lo he conseguido, pero a costa de usar mime para la
>> codificación a través de un ocx que además es de pago.
>>
>> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx
>> que permita usar base64, se pueda usar en Xailer y sea gratuita.
>>
>> 1 Saludico,
>> Fredy
> Fredy hola:
>
> mandame por favor un archivo de los que quieres grabar en mysql .
>
> Saludos...
>
Mysql y guardar imagenes, rtf, etc...
Fredy,
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
No necesitas ni base64 ni ninguna otra codificación. Utiliza algo así:
::oDataSource:Execute( "INSERT INTO documentos(Id, Contenido) VALUES('"
+ ;
cId + "', X'" + StringToHex( cBuffer ) + "')" )
Ojo a las comillas simples y dobles. Lo mejor es que copies ese texto al
editor de código y lo revises ahí.
El "truco" está en convertir la cadena a hexadecimal, y en la sentencia SQL
utilizar X'...' en vez de '...', es decir, poniendo una X delante de la
cadena.
No obstante, esto funciona al 100% en SQLite, y también en MySQL... siempre
que la cadena no sea más grande del tamaño de los buffers de comunicacion de
MySQL, que por defecto son de 1MB. Es decir, que por defecto no vas a poder
grabar contenidos de más de 1/2 MB. Para sobrepasar ese límite, lo mejor es
utilizar un dataset, aunque sea creado expresamente al vuelo, ya que los
dataset de Xailer utilizan una técnica de envio de datos por bloques, y por
lo tanto no les afecta esa limitación. Sería algo así:
WITH OBJECT ::oDataSource:Query( "SELECT * FROM documentos WHERE 0" )
:Open()
:AddNew()
:Id := nId
:Contenido := cBuffer
:Update()
:End()
END
Fíjate en la cláusula "WHERE 0", que permite abrir el query sin llegar a
obtener ningún registro, y por tanto no consume ancho de banda ni casi
ningún recurso del servidor.
Y por cierto, con ambas técnicas, el contenido grabado es directamente lo
que quieres grabar, sin codificar en ningún sistema concreto. Vamos, que el
blob contendrá exactamente los datos en binario de lo que tú quieres.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> ¿Alguien sabe cómo hacerlo "a pelo"?, o si nó, alguna librería u ocx que
> permita usar base64, se pueda usar en Xailer y sea gratuita.
No necesitas ni base64 ni ninguna otra codificación. Utiliza algo así:
::oDataSource:Execute( "INSERT INTO documentos(Id, Contenido) VALUES('"
+ ;
cId + "', X'" + StringToHex( cBuffer ) + "')" )
Ojo a las comillas simples y dobles. Lo mejor es que copies ese texto al
editor de código y lo revises ahí.
El "truco" está en convertir la cadena a hexadecimal, y en la sentencia SQL
utilizar X'...' en vez de '...', es decir, poniendo una X delante de la
cadena.
No obstante, esto funciona al 100% en SQLite, y también en MySQL... siempre
que la cadena no sea más grande del tamaño de los buffers de comunicacion de
MySQL, que por defecto son de 1MB. Es decir, que por defecto no vas a poder
grabar contenidos de más de 1/2 MB. Para sobrepasar ese límite, lo mejor es
utilizar un dataset, aunque sea creado expresamente al vuelo, ya que los
dataset de Xailer utilizan una técnica de envio de datos por bloques, y por
lo tanto no les afecta esa limitación. Sería algo así:
WITH OBJECT ::oDataSource:Query( "SELECT * FROM documentos WHERE 0" )
:Open()
:AddNew()
:Id := nId
:Contenido := cBuffer
:Update()
:End()
END
Fíjate en la cláusula "WHERE 0", que permite abrir el query sin llegar a
obtener ningún registro, y por tanto no consume ancho de banda ni casi
ningún recurso del servidor.
Y por cierto, con ambas técnicas, el contenido grabado es directamente lo
que quieres grabar, sin codificar en ningún sistema concreto. Vamos, que el
blob contendrá exactamente los datos en binario de lo que tú quieres.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info