Создание ZIP-файла в памяти и отправка через POST-запрос - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать zip-файл в памяти с python, который затем прикреплю к запросу POST для отправки с python-запросами. Вот функция, которую я написал

import StringIO,zipfile
code = "poopootest"
def _build_zip_inmem(code):
    mf = StringIO.StringIO()
    with zipfile.ZipFile(mf, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:
        zf.writestr('../../../../../../../../../var/www/html/ATutor/mods/poc/1111.phtml', code)
        zf.writestr('imsmanifest.xml', "noxmlhereoops")
    mf.write(zf)
    print mf.getvalue()
    return mf.getvalue()
_build_zip_inmem(code)  

Это в основном работает, за исключением того, что getvalue (), похоже, также возвращает адрес памяти объекта. Конечный вывод строки печати говорит <zipfile.ZipFile object at 0x7f4e8ba434d0>, и я считаю, что именно поэтому мой POST терпит неудачу.

Как преобразовать этот почтовый индекс в памяти в двоичный файл, который затем можно отправить через POST?

Спасибо !!!

1 Ответ

1 голос
/ 07 июня 2019

mf.getvalue() оканчивается на <zipfile.ZipFile object at 0x7f4e8ba434d0>, потому что вы записали эту строку в mf при вызове mf.write(zf).В этом вызове write() нет необходимости, поскольку zip-файл уже записан в mf с помощью блока with zipfile.ZipFile(mf, ...).

...