【发布时间】:2021-04-14 18:34:20
【问题描述】:
我在 Django 中有以下模型:
class AksOrder(models.Model):
zip_file = models.FileField(upload_to='aks_zips/%M/%S/', blank=True)
在我看来,我有以下基本功能:
def gen_zip(pk, name, vars):
zipObj = ZipFile(os.path.join('/tmp/', str(name) + '_' + str(pk) + '.zip'), 'w')
zipObj.write(pdf_files[0].path, '/filea.pdf')
zipObj.write(pdf_files[1].path, '/fileb.pdf')
def aksorder_complete(request, pk):
ao = get_object_or_404(AksOrder, id=pk)
zipObj = generate_shop_zip(ao.c.pk, ao.dl, ao.vars)
ao.zip_file.save('file.zip', zipObj)
我不仅尝试了这个版本,而且这个版本对我来说似乎是最合理和最合乎逻辑的版本。我得到一个There is no item named 65536 in the archive。当我在第一个函数中稍微修改它并在 zip 写入结束时关闭文件时,我收到一条 ValueError: Attempt to use ZIP archive that was already closed 消息。两次,zip 文件都在 /tmp/ 中正确生成,我无法解决它。这只是本地的,我需要稍后为 S3 做......
【问题讨论】:
-
您想在 Zipfile 中插入
images吗? -
不,pdf。如
gen_zip函数的第 3 行和第 4 行所述。有用。我基本上要问的是,如何在 django 中将 zipflie 保存到FileField。我不能Filefield = Zipfile。