Получение файлов из 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()
Вернуться на верх