6

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

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

你认为正确优雅的pythonic足够吗?有什么更好的方法吗?

谢谢!

4

2 回答 2

12

因为StringIO您通常应该使用o.getvalue()来获得结果。此外,如果您想将普通文件添加到 zip 文件中,您可以使用zf.write('picture.jpg'). 你不需要手动阅读它。

于 2010-03-09T18:32:21.067 回答
4

避免使用磁盘文件可能会使您的服务器慢下来,但它肯定会起作用。

如果您同时服务太多这些请求,您将耗尽内存。

于 2010-03-09T18:32:00.550 回答