Чтение загруженного почтового файла - PullRequest
1 голос
/ 26 марта 2012

Как я могу прочитать файловые элементы в zip-файле, который загружен с использованием формы в html и с использованием Cgi, я попытался так:

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 Ответ

3 голосов
/ 26 марта 2012

Вы можете попытаться передать 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>
...