python - 将 ZipFile 对象存储到 Django 数据库中

标签 python django zip

我认为我遇到的问题相当罕见,因为我似乎无法在这里或 Google 上找到答案。
我的数据库中存储了几张图片,为了提供这些图片,我想对它们进行压缩,将创建的 ZipFile 存储在数据库中,该数据库以 AmazonS3 存储作为后端。更重要的是,所有这些操作都是在 Celery 管理的后台任务中完成的。现在...这是我编写的代码:

zipname = "{}.zip".format(reporting.title)

with ZipFile(zipname, 'w') as zf:
    # Here is the zipfile generation. It quite doesn't matter anyway since this works fine.
    reporting = Reporting.objects.get(pk=reporting_id)
    reporting.pictures_archive = zf
    reporting.save()

我收到错误:*** AttributeError:“ZipFile”对象没有属性“_commissed”
所以我尝试以这种方式将 zipfile 转换为 Django 文件: zf = File(zf) 但它返回一个空对象。

有人可以帮我吗?我有点被困住了...

最佳答案

这并不像我想象的那么复杂。 (我猜这可以解释为什么没有人在互联网上问这个问题)
使用 Python 3.3,您的字符串是 unicode,并且您主要使用 unicode 对象。文件需要字节数据才能正常工作,因此解决方案如下:

zipname = "{}.zip".format(reporting.id, reporting.title)

with ZipFile(zipname, 'w') as zf:
    # Generating the ZIP ! 

reporting = Reporting.objects.get(pk=reporting_id)
reporting.pictures_archive.delete()
reporting.pictures_archive = File(open(zipname, "rb"))
reporting.save()

关于python - 将 ZipFile 对象存储到 Django 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758003/

相关文章:

python - 如何在python中对齐文本输出?

python - 我想用 Django 响应图像

django - CommandError : You must set settings. ALLOWED_HOSTS 如果 DEBUG 为 False

python - Django:如何从 django 模板中的 object_list 中索引图像

azure - 从 ZIP 文件中解压缩文件并将其用作 ADF 复制事件中的源

iphone - libarchive 解压到指定文件夹?

python - Pandas:两个相等的列和根据第一列的短第二列

java - 运行用 python 编写的 tensorflow 模型,以便从 java 进行训练和预测

python - Pandas 蟒 : how to create multiple columns from a list

java - ZipFile 中的 ZipFile