在内存中创建 ZIP 文件并通过 POST 请求发送
Creating ZIP file in Memory and sending via POST request
我正在尝试使用 python 在内存中创建一个 zip 文件,然后将其附加到 POST 请求以使用 python-requests 发送。这是我写的函数
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() 似乎还 return 对象的内存地址外,这基本上有效。打印行的结尾输出为 <zipfile.ZipFile object at 0x7f4e8ba434d0>
,我相信这就是我的 POST 失败的原因。
如何将这个内存中的 zip 文件转换为二进制文件,然后可以通过 POST 发送?
谢谢!!!
mf.getvalue()
以 <zipfile.ZipFile object at 0x7f4e8ba434d0>
结尾,因为您在调用 mf.write(zf)
时将该字符串写入 mf
。对 write()
的调用是不必要的,因为压缩文件已经被 with zipfile.ZipFile(mf, ...)
块写入 mf
。
我正在尝试使用 python 在内存中创建一个 zip 文件,然后将其附加到 POST 请求以使用 python-requests 发送。这是我写的函数
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() 似乎还 return 对象的内存地址外,这基本上有效。打印行的结尾输出为 <zipfile.ZipFile object at 0x7f4e8ba434d0>
,我相信这就是我的 POST 失败的原因。
如何将这个内存中的 zip 文件转换为二进制文件,然后可以通过 POST 发送?
谢谢!!!
mf.getvalue()
以 <zipfile.ZipFile object at 0x7f4e8ba434d0>
结尾,因为您在调用 mf.write(zf)
时将该字符串写入 mf
。对 write()
的调用是不必要的,因为压缩文件已经被 with zipfile.ZipFile(mf, ...)
块写入 mf
。