gpt4 book ai didi

django - 在将文件保存到数据库之前,如何在 Django 中压缩多个上传的文件?

转载 作者:行者123 更新时间:2023-12-05 07:12:37 43 4
gpt4 key购买 nike

我试图在使用 Django 将文件夹保存到数据库/文件存储系统之前对其进行压缩。对于此任务,我正在使用 ZipFile 库。这是 view.py 的代码:

class BasicUploadView(View):
def get(self, request):
file_list = file_information.objects.all()
return render(self.request, 'fileupload_app/basic_upload/index.html',{'files':file_list})

def post(self, request):
zipfile = ZipFile('test.zip','w')
if request.method == "POST":
for upload_file in request.FILES.getlist('file'): ## index.html name
zipfile.write(io.BytesIO(upload_file))
fs = FileSystemStorage()
content = fs.save(upload_file.name,upload_file)
data = {'name':fs.get_available_name(content), 'url':fs.url(content)}
zipfile.close()
return JsonResponse(data)

但是我收到以下错误:

TypeError: a bytes-like object is required, not 'InMemoryUploadedFile'

这个问题有解决办法吗?由于我可能必须上传包含大文件的文件夹,我是否必须为此目的编写一个自定义的 TemporaryFileUploadHandler?我最近开始使用 Django,这对我来说很陌生。请帮我提一些建议。

最佳答案

InMemoryUploadedFile是一个不仅仅包含文件的对象,您应该打开文件并读取它的内容(InMemoryUploadedFile.file 是文件)

InMemoryUploadedFile.open() 

您应该使用 open() 打开文件,然后 read() 它的内容,您还应该检查您是否已正确上传文件,您还可以对 zip 和文件使用 with 语法 https://www.pythonforbeginners.com/files/with-statement-in-python

关于django - 在将文件保存到数据库之前,如何在 Django 中压缩多个上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60397373/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com