Получение файлов из Aw3 и добавление их в .zip в Django
Я хотел бы загрузить некоторые файлы из Aw3 в .zip, со всеми этими файлами.
Я использую django==2.2.1 с библиотекой boto3, последняя версия.
Я пытаюсь получить файлы по одному, преобразовать их с помощью json.dump и вставить их в .zip файл с помощью функции generate_zip.
Ничего не решает, я имею в виду, что не решает ни одной ошибки и не отвечает на .zip или что-то в консоли, что я бы увидел. Возможно, .zip не был создан, но я не знаю, потому что, как я уже говорил, он не отвечает ни на что.
Мой код:
for id_file in files:
BUCKET_NAME="xxxx"
BUCKET_FILE_NAME='folder/'+id_file+'/'+category+"/"+name_file
s3 = boto3.client('s3',aws_access_key_id=settings.AWS_ACCESS_KEY_ID,aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,region_name='eu-west-2')
s3_response_object=s3.get_object(Bucket=BUCKET_NAME,Key=BUCKET_FILE_NAME)
s3_response_object['Body'] = s3_response_object['Body'].read().decode("ISO-8859-1")
s3_response_object['Key'] = settings.AWS_ACCESS_KEY_ID+'/'+settings.AWS_SECRET_ACCESS_KEY
location = s3.get_bucket_location(Bucket=BUCKET_NAME)['LocationConstraint']
url = "https://s3-%s.amazonaws.com/%s/%s" % (location, BUCKET_NAME, BUCKET_FILE_NAME)
s3_response_object['URL'] = url
file_data = json.dumps(s3_response_object, default = myconverter)
resultFiles.append(file_data)
full_zip_in_memory = generate_zip(resultFiles)
response = HttpResponse(full_zip_in_memory, content_type='application/x-zip')
response['Content-Disposition'] = 'attachment; filename="files.zip"'
return response
Функция generate_zip
def generate_zip(files):
mem_zip = BytesIO()
with zipfile.ZipFile(mem_zip, mode="w",compression=zipfile.ZIP_DEFLATED) as zf:
for f in files:
zf.writestr(f[0], f[1])
return mem_zip.getvalue()