Извлеките файлы из zip-папки и сохраните их в blobstore - PullRequest
0 голосов
/ 21 марта 2012

Я хочу загрузить zip-папку из файла ввода в форме, которую я хочу извлечь из содержимого этой загруженной zip-папки, и сохранить содержимое (файлы) этого zip-файла в хранилище блогов, чтобы загрузить их после помещения этих файлов одна папка, но проблема в том, что я не могу иметь дело с папкой 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 ]

2 голосов
/ 21 марта 2012

Исходя из вашего комментария, звучит так, что вам нужно более внимательно изучить документацию модуля cgi , которая включает следующее:

Если поле представляет собой загруженный файлfile, получая доступ к значению через атрибут value или метод getvalue(), считывает весь файл в памяти в виде строки.Это может быть не то, что вы хотите.Вы можете проверить загруженный файл, протестировав либо атрибут filename, либо атрибут file.Затем вы можете прочитать данные в свободное время из атрибута file ...

Это говорит о том, что вам нужно изменить свой код, чтобы он выглядел примерно так:

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

Тамдополнительные примеры в документации.

0 голосов
/ 22 марта 2012

Вам не нужно извлекать файлы из почтового индекса, чтобы сделать их доступными для загрузки - см. этот пост , где приведен пример подачи напрямую из почтового индекса.Вы можете адаптировать этот код, если хотите извлечь файлы и сохранить их по отдельности в хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...