从zip文件夹中提取文件并将这些文件存储在blobstore中

时间:2012-03-21 16:48:18

标签: python google-app-engine unzip blobstore

我想从文件输入中上传zip文件夹,我希望提取此上传的zip文件夹的内容,并将此zip的内容(文件)存储在blobstore中,以便在将这些文件放入后下载它们一个文件夹,但问题是我无法直接处理zip文件夹(阅读它),我试过这样:

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

但问题仍然是我不能像以前那样阅读zip,我也试着像这样直接读取zip文件夹:

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

但这种方式出现了错误。请允许任何人帮助我。谢谢。

2 个答案:

答案 0 :(得分:2)

根据您的评论,您需要仔细查看cgi module documentation,其中包括以下内容:

  

如果字段表示上载的文件,则通过value属性或getvalue()方法访问该值会将内存中的整个文件作为字符串读取。这可能不是你想要的。您可以通过测试filename属性或file属性来测试上传的文件。然后,您可以从file属性...

中悠闲地阅读数据

这表明您需要修改代码,使其类似于:

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

文档中还有其他示例。

答案 1 :(得分:0)

您无需从zip中提取文件以使其可供下载 - 有关从zip直接提供服务的示例,请参阅this post。如果要提取文件并将它们单独存储在blobstore中,则可以调整该代码。