Guardar pdfs en base de datos

37 views
Skip to first unread message

Jacinto Parga

unread,
Jan 23, 2015, 11:45:35 AM1/23/15
to web2py-...@googlegroups.com
Hola,

genero un archivo pdf con la librería reporlab y lo presento en el navedagor. Todo ok. Pero quiero almacenar ese archivo junto con otros datos en una tabla que he definido en mi base de datos. El archivo pdf es lo suficientemente pequeño como para guardarlo como 'upload'

Esta es mi tabla:
db.define_table('certificados',
    Field('f_tipo', type='string',writable=False),
    Field('f_documento', type='upload', label='Documento', writable=False),
    Field('f_activo', type='booblean', default=False, label='Activo'))

Este es el final del controlador, que como digo me sirve perfectamente el fichero en el navegador:

def mipdf() 
....
  doc.build(story)
    data = out.getvalue()
    out.close()
    response.headers['Content-Type']='application/pdf'
    cabecera=response.headers['Content-Disposition'] = 'attachment; filename=certificado.pdf'
#Guardamos el certificado
    db.t_certificados.f_tipo.writable=True
    db.t_certificados.f_documento.writable=True
    db.t_certificados.insert(f_tipo="Básico",f_documento=data)
    return data

Como véis lo que quiero es almacenar el fichero pdf como un upload en el campo f_documento
No me da error pero con el código anterior no me almacena absolutamente nada en ese campo, en los demás sí. He probado con las sugerencias del manual: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#More-on-uploads

pero no consigo poner correctamente el nombre del fichero y me da error.

P.D también me valdría solución para subirlo a google cloud store donde tengo un bucket habilitado.

Gracias, un saludo a todos

Jacinto Parga

unread,
Jan 29, 2015, 4:30:51 PM1/29/15
to web2py-...@googlegroups.com
Lo resolví más fácil utilizando una estructura con blobs como indican en: http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#More-on-uploads

El truco está en diferenciar claramente el nombre del fichero del contenido.

Gracias de todas formas
Reply all
Reply to author
Forward
0 new messages