2012-03-21 25 views
0

我想从表单中的文件输入中上传zip文件夹我想提取此上传的zip文件夹的内容,并将此zip文件的内容(文件)存储在Blob存储区,以将这些文件一个文件夹中下载后他们,但问题是,我不能直接处理ZIP文件夹(读它),我想,因为这:从zip文件夹中提取文件并将这些文件存储在blobstore中

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

但问题仍然我无法读取以前的邮编,也试图直接阅读zip文件夹,如下所示:

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

但是有这样的错误,请任何人帮助我。提前感谢。

+1

一般来说,它可以帮助你发布你的错误。 – larsks 2012-03-21 17:26:53

回答

2

基于您的评论,这听起来像你需要采取在cgi module documentation仔细一看,其中包括以下内容:如果一个字段代表一个上传文件

,通过value属性或访问值getvalue()方法以字符串形式读取内存中的整个文件。这可能不是你想要的。您可以通过测试filename属性或file属性来测试上传的文件。然后,您可以从file属性休闲读取数据...

这表明,你需要修改的代码看起来是这样的:

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

有文档中附加的例子。

+0

:当我写的问题:zipstream = StringIO.StringIO(zip1.read())是:'str'对象没有属性'读'(所以我不能读取上传的zip),所以我试图使用:z1 = zipfile.ZipFile(zip1,“r”)没有zipstream的用法,但错误是我无法直接读取上传的zip。 – 2012-03-21 17:37:32

0

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

+0

@ Nick Johnson:对不起,但我完全不理解这篇文章,你的意思是说,不需要从zip中提取文件,但这是可能的?我需要做到这一点,并将这些文件上传到blobstore,请我想要帮忙? – 2012-03-22 16:43:03

+0

@Eng_Engineer您是否阅读过我链接的博客文章? – 2012-03-22 16:46:52

+0

:是的,我很抱歉,我不理解这篇文章! – 2012-03-22 16:50:32

相关问题