Thank you all.

Certainly it will go to the book, Bruno. ;-)

--
Vinicius Assef.


On Fri, Jun 17, 2011 at 12:19 PM, Bruno Rocha <rochacbr...@gmail.com> wrote:
> The viewer action is only for cosmetics, to work as an URL shortener. The
> filename generated by DAl is so extense.
> BTW: I mentioned in the end of the email:
> "you can always refer directly to the image path (not using the viewer
> function) but you always need to fetch the picture name from db"
> On Fri, Jun 17, 2011 at 11:19 AM, Massimo Di Pierro
> <massimo.dipie...@gmail.com> wrote:
>>
>> I think that is the point. In 'uploads' if you need authorization. In
>> 'static' if you do not. In the latter you do not need to worry about
>> authorization and you can let the web server by-pass web2py (so do not
>> viewer action).
>>
>> On Jun 17, 9:16 am, Anthony <abasta...@gmail.com> wrote:
>> > Thanks, Bruno -- this is very helpful. With this method, you can't
>> > enforce
>> > authorization, though, right? So this should only be used for uploaded
>> > files
>> > intended to be accessed by anyone.
>> >
>> > Anthony
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Friday, June 17, 2011 6:56:52 AM UTC-4, 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.
>> >
>> > > The best way is to set the upload path pointing to /static not to
>> > > /upload
>> > > and you will have your uploaded files to be served as static files,
>> > > bypassing download function.
>> >
>> > > under /static create a folder called 'picture'
>> >
>> > > *Go to the table definition and do this:*
>> >
>> > > *<model>*
>> > > db.define_table('announce',
>> >
>> > >
>> > > Field('picture','upload',uploadfolder=request.folder+'static/pictures'),
>> > >                         )
>> > > *</model>*
>> >
>> > > You are saying DAL to store uploades files in to that folder under
>> > > static
>> > > and store the ath in the field.
>> >
>> > > Now in your controller create a function do handle that (different
>> > > from
>> > > download, it is a kind of viewer)
>> >
>> > > *<controller>*
>> > > def viewer():
>> > >     row = db(db.announce.id
>> > > ==request.args(0)).select(db.announce.picture).first()
>> > >     redirect(URL('static','pictures',args=row.picture))
>> > > *</controller>*
>> >
>> > > *Now you can fo this:*
>> >
>> > >http://server/app/default/viewer/3# record id
>> >
>> > > then you got redirected to the image (no html page)
>> >
>> > > example:
>> >
>> >
>> > > >http://127.0.0.1:8000/app/static/pictures/announce.picture.aaf5d3f777...
>> >
>> > > you can always refer directly to the image path (not using the viewer
>> > > function) but you always need to fetch the picture name from db.
>> >
>> > > Hope it helps.
>> >
>> > > Should go on the book?
>> >
>> > >  --
>> > > Bruno Rocha
>> > > [ About me:http://zerp.ly/rochacbruno]
>> > > [ Aprenda a programar:http://CursoDePython.com.br]
>> >
>> > > On Thu, Jun 16, 2011 at 6:09 AM, Vinicius Assef
>> > > <vinic...@gmail.com>wrote:
>> >
>> > >> Hi guys.
>> >
>> > >> I have a table (called anuncio) with an upload field (called foto),
>> > >> so
>> > >> anuncio.foto is my upload field.
>> >
>> > >> I'm showing and linking it with this piece of code in my view :
>> > >>    {{url = URL(c='anuncios',f='download', args=['uploads',
>> > >> anuncio.foto])}}
>> > >>    {{=A(IMG(_src=url), _href=url)}}
>> >
>> > >> My /contollers/anuncios.py/download() function is the default, as
>> > >> seen
>> > >> below:
>> > >> def download():
>> > >>    return response.download(request,db)
>> >
>> > >> When user clicks on this image, browser shows the download dialog,
>> > >> asking him/her where to save the image.
>> > >> But I'd like to simply show the image, not present the download
>> > >> dialog. All these images will be public.
>> >
>> > >> How I solved it:
>> > >> 1) I entered in /myapp/static/images and created a symbolic link
>> > >> called 'uploads' pointing to /myapp/uploads.
>> > >> 2) In my view, I changed the: {{url = URL(...}} stuff by this: {{url
>> > >> =
>> > >> URL(c='static', f='images', args=['uploads', anuncio.foto])}}
>> >
>> > >> I think this isn't the best choice because I'm pointing URL() to a
>> > >> fake controller and function, and I'm counting on an external
>> > >> resource: a symbolic link in my filesystem.
>> >
>> > >> How would be the "web2pythonic" way to do this?
>> >
>> > >> --
>> > >> Vinicius Assef.
>

Reply via email to