python 在Django中生成.zip文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 在Django中生成.zip文件相关的知识,希望对你有一定的参考价值。

import os
import zipfile
import cStringIO as StringIO

class ContractDownloadGalleryDetailView(LoginRequiredMixin, DetailView):
    model = Contract

    def render_to_response(self, context, **httpresponse_kwargs):
        contract = self.object

        if not contract.images.exists():
            return HttpResponseRedirect(
                reverse('contract:contract_detail', args=(contract.id,)),
            )

        dirname = u'imagenes_contrato_{0}'.format(contract.number)
        filename = u'{0}.zip'.format(dirname)

        buffer = StringIO.StringIO()
        z = zipfile.ZipFile(buffer, 'w')
        for contract_image in contract.images.all():
            z.write(contract_image.image.path, os.path.join(dirname, os.path.basename(contract_image.image.path)))
        z.close()
        buffer.seek(0)
        response = HttpResponse(buffer.read())
        response['Content-Disposition'] = u'attachment; filename={0}'.format(filename)
        response['Content-Type'] = 'application/x-zip'
        return response

以上是关于python 在Django中生成.zip文件的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中生成受密码保护的 ZIP 文件

无法在goofys挂载的文件夹中生成zip文件

python django 中生成 Authorization token

如何在python中生成文件而不将其保存到磁盘?

如何不在 Python、Django 中生成两次相同的动态图像?

如何在 django 中生成 url