python - 创建内存中 zip 文件并作为 http 响应返回的函数

标签 python zip stringio

我避免在磁盘上创建文件,这是我目前所得到的:

def get_zip(request):
    import zipfile, StringIO
    i = open('picture.jpg', 'rb').read()
    o = StringIO.StringIO()
    zf = zipfile.ZipFile(o, mode='w')
    zf.writestr('picture.jpg', i)
    zf.close()
    o.seek(0)
    response = HttpResponse(o.read())
    o.close()
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = "attachment; filename=\"picture.zip\""
    return response

你认为 correct-elegant-pythonic 就足够了吗?有什么更好的方法吗?

谢谢!

最佳答案

对于 StringIO,您通常应该使用 o.getvalue() 来获取结果。另外,如果要将普通文件添加到 zip 文件中,可以使用 zf.write('picture.jpg')。您无需手动阅读。

关于python - 创建内存中 zip 文件并作为 http 响应返回的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411514/

相关文章:

python - 如何在python中获取一个城市(geonameid)的附近城市?

python - 用python计算平均值

date - Linux zip 命令 - 在文件名中添加日期元素

java - 尝试将 zip 文件内容的字符串表示形式保存为 Java 中的文件

c++ - 在 C++ 中将包含二进制操作的字符串转换为 double

python - 在 zipfile 中从 URL 读取 shapefile 时,错误为初始值不是 str

python - 如何在 Python 上创建 PDF 生成器?

python - Matplotlib:在连接到寄生虫轴的数据上绘制数据标签

PHP ZipArchive::open 总是导致 ZIPARCHIVE::ER_READ 错误

python - 如何从 Python 中的标准输出重定向转义