Your model says:
db.define_table('*pdfs')*

And you controller points to another table (db.*pdfDocs)*

Your controller should be

*CONTROLLER CODE*
def viewer():
    row = db(db.*pdfs*.id <http://db.pdfdocs.id/>
==request.args(0)).select(db.*pdfs*.fileS).first()
    redirect(URL('static','pdfs',args=row.fileS))


Cheers.
Chris.

El vie., 1 de mar. de 2019 09:40, mostwanted <godirao...@gmail.com>
escribió:

> I am attempting Bruno's above code to display the saved PDF, i have
> created a link in my index page that takes me to the viewer page but when i
> click it i get an error message below:
>
> <type 'exceptions.AttributeError'> 'NoneType' object has no attribute
> 'fileS'
> * MODEL CODE:*
>
> db.define_table('pdfs',
>
> Field('fileS','upload',uploadfolder=request.folder+'static/pdfs'))
>
>
> *CONTROLLER CODE*
> def viewer():
>     row = db(db.pdfDocs.id
> ==request.args(0)).select(db.pdfDocs.fileS).first()
>     redirect(URL('static','pdfs',args=row.fileS))
>
>
> *VIEW CODE (index)*
>
>
>
>
> *{{extend 'layout.html'}}{{=A('Click to view', _href=URL('default',
> 'viewer'))}}*I changed the 'file' variable because it said its an  "ALL"
> reserved SQL/NOSQL keyword
> What can i do to make this link redirect me without an error i'm getting??
>
> Regards;
>
> Mostwanted
>
> On Tuesday, December 14, 2010 at 6:57:05 PM UTC+2, rochacbruno wrote:
>>
>> For security reasons, web2py does not expose the 'uploads' folder to the
>> user, this folder can be accessed only by the 'download' function.
>>
>> You can do that:
>>
>> change the upload folder with 'uploadfolder' parameter.
>>
>> <model>
>> db.define_table('pdfs',
>>
>> Field('file','upload',uploadfolder=request.folder+'static/pdfs')
>>                        )
>> </model>
>>
>> Create a viewer function wich redirects the user direct to the file,
>> then, if the user has adobe acrobat plugin to view the file in browser,
>> this file will be shown in the browser, else, will be downloaded.
>>
>> <controller>
>> def viewer():
>>     row = db(db.pdfs.id==request.args(0)).select(db.pdfs.file).first()
>>     redirect(URL('static','pdfs',args=row.file))
>> </controller>
>>
>> Now you can call this as:
>>
>> http://127.0.0.1:8000/pdfs/default/viewer/3 #record id
>>
>> which redirects the user to:
>>
>> http://127.0.0.1:8000/pdfs/static/pdfs/pdfs.file.aaf5d3f7779841d0.6e65775f64616c5f68656c702e706466.pdf
>>
>>
>> --
>>
>> Bruno Rocha
>> http://about.me/rochacbruno/bio
>>
>>
>> 2010/12/14 azarkowsky <azark...@gmail.com>
>>
>>> In my web2py application I'm allowing users to upload PDF documents
>>> (via an upload field) and then on another page I provide a download
>>> link, however, I think because of the file renaming security feature
>>> these PDF documents are truly being downloaded again (saved locally to
>>> each user's desktop) instead of just displayed in a new browser window
>>> as is the case with most other PDFs I encounter on other websites.  Is
>>> there any way to provide a link directly to a file that was uploaded
>>> so the browser can display it without having to download the file
>>> again?
>>>
>>> Thanks,
>>> Adam
>>
>>
>>
>>
>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to