Hi Anthony,
I was using 2.9.5 before the upgrade.
In the end, I found that it may be that the part of the code than handles
uploads through a filesystem never did work with the « uploadfolder » attribute
(i.e. it might have been a patch I made a few months ago and lost in the
process of the upgrade).
In any case, here is the solution to my issue if anyone ever meets it :
In dal.py, line 10211:
os.makedirs(path)
pathfilename = pjoin(path, newfilename)
if self.uploadfs:
- dest_file = self.uploadfs.open(newfilename, 'wb')
+ dest_file = self.uploadfs.open(pathfilename, 'wb')
else:
dest_file = open(pathfilename, 'wb')
try:
In dal.py, line 10249:
stream = StringIO.StringIO(data)
elif self.uploadfs:
# ## if file is on pyfilesystem
- stream = self.uploadfs.open(name, 'rb')
+ fullname = pjoin(file_properties['path'], name)
+ stream = self.uploadfs.open(fullname, 'rb')
else:
# ## if file is on regular filesystem
# this is intentially a sting with filename and not a stream
With this, the DAL should be able to both write and retrieve files through a
filesystem whilst still taking in consideration the prefixed folder (i.e. the «
uploadfolder » attribute).
That’s very handy if you need to specify multiple upload locations in your
bucket.
Le 13 nov. 2014 à 15:12, Anthony <[email protected]> a écrit :
> Which version of web2py were you using prior to the upgrade?
>
> On Thursday, November 13, 2014 4:04:19 AM UTC-5, Louis Amon wrote:
> Hi,
>
> My website has been using web2py for a few months now, and we handle pictures
> using Amazon S3 and Cloudfront for storage and distribution.
>
> The corresponding code in web2py looks like this :
>
> Field('picture_1',
> type='upload',
> requires=IS_EMPTY_OR(IS_IMAGE(extensions=('jpeg', 'png'))),
> uploadfolder='offer/picture_1',
> uploadfs=settings.amazon_fs,
> autodelete=True,
> represent=lambda value, row: cloud_download(value) if value is not None
> else None,
> )
>
>
> When a picture was uploaded through a form, it was uploaded to our Amazon
> bucket at a path similar to this :
> {bucket_name}/offer/picture_1/offer.picture_1.{timestamp_hash}.{filename_hash}
>
> I recently updated to 2.9.11-stable+timestamp.2014.09.15.23.35.11 but now it
> seems that the uploadfolder does not get prefixed to the path.
> i.e. : my uploaded pictures now go to :
> {bucket_name}/offer.picture_1.{timestamp_hash}.{filename_hash}
>
>
> Was there something in the 2.9.11 patch that modified the behaviour of
> uploads through a filesystem ?
>
> Is there a quick fix for mend these broken paths ?
>
> --
> 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 a topic in the Google
> Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/f4LoEF9FiiM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.