阅读上传的zip文件

时间:2012-03-25 20:12:07

标签: python google-app-engine zip cgi

我如何阅读使用html中的表格上传并使用Cgi上传的zip文件中的文件项目,我试过这样:

form = cgi.FieldStorage() 
file_upload = form['file']
if zipfile.is_zipfile(file_upload.filename):
    print "%s is a valid pkzip file" % file_upload.filename
else:
    print "%s is not a valid pkzip file" % file_upload.filename
zfile=zipfile.ZipFile(file_upload.filename,"r")
files_zip=zfile.namelist()

例如,当我上传(test.zip)错误是没有这样的文件或目录:'test.zip',如果我运行没有这个zfile=zipfile.ZipFile(file_upload.filename,"r")的代码,我得到那个test.zip不是一个有效的pkzip文件。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以尝试将file_upload.file传递给ZipFile而不是file_upload.filename

这是一个打印zip文件中文件列表的脚本:

import sys
sys.stderr = sys.stdout
print "Content-Type: text/plain"
print

import cgi
import zipfile

form = cgi.FieldStorage()

filefield = form['somefile']
print "Filename:", filefield.filename

if filefield.file is not None and zipfile.is_zipfile(filefield.file):
    zfile = zipfile.ZipFile(filefield.file)
    print "Name list:\n\t",
    print "\n\t".join(zfile.namelist())

以及相应的html表单:

<!DOCTYPE html>
<form enctype="multipart/form-data" action="file-upload" method=post>
<p><label for=somefile>File: <input type=file name=somefile>
<p><input type=submit>
</form>