Computer_Engineer
Computer_Engineer

Reputation: 403

Extract files from zip folder and store these files in blobstore

i want to upload zip folder from file input in form the i want to extract the contents of this uploaded zip folder,and store the contents (files)of this zip in the blobstore in order to download them after putting these files in one folder,but the problem is that i can't deal with the zip folder directly(to read it), i tried as this:

form = cgi.FieldStorage() 
file_upload = form['file']
zip1=file_upload.filename
zipstream=StringIO.StringIO(zip1.read())

But the problem still that i can't read the zip as previous,also i tried to read zip folder directly like this:

z1=zipfile.ZipFile(zip1,"r")

But there was an error in this way.Please can any one help me.Thanks in advance.

Upvotes: 0

Views: 335

Answers (2)

Nick Johnson
Nick Johnson

Reputation: 101149

You don't have to extract files from the zip in order to make them available for download - see this post for an example of serving direct from a zip. You can adapt that code if you want to extract the files and store them individually in the blobstore.

Upvotes: 0

larsks
larsks

Reputation: 312780

Based on your comment, it sounds like you need to take a closer look at the cgi module documentation, which includes the following:

If a field represents an uploaded file, accessing the value via the value attribute or the getvalue() method reads the entire file in memory as a string. This may not be what you want. You can test for an uploaded file by testing either the filename attribute or the file attribute. You can then read the data at leisure from the file attribute...

This suggests that you need to modify your code to look something like:

form = cgi.FieldStorage() 
file_upload = form['file']
z1 = zipfile.ZipFile(file_upload.file, 'r')

There are additional examples in the documentation.

Upvotes: 2

Related Questions