我想从文件输入中上传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")
但这种方式出现了错误。请允许任何人帮助我。谢谢。
答案 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中,则可以调整该代码。