Я пытаюсь сжать папку перед сохранением в базу данных / систему хранения файлов, используя 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, и это довольно ново для меня. Пожалуйста, помогите мне советом.