我正在尝试从S3存储桶中的子文件夹中创建一个zip文件,然后将该zip文件保存在同一存储桶中的另一个子文件夹中。
当我在本地运行我的flask应用程序时,我可以从S3子文件夹存储桶中创建zip文件,但在Heroku上无法创建,因为它不会存储任何东西。
我正在查看这个示例,但它似乎已经过时,使用本地文件。 https://www.botreetechnologies.com/blog/create-and-download-zip-file-in-django-via-amazon-s3 这是我正在使用的代码片段。
任何想法如何解决这个问题?对于用户来说,下载一个zip文件比单个文件更加方便。非常感谢您的帮助。
当我在本地运行我的flask应用程序时,我可以从S3子文件夹存储桶中创建zip文件,但在Heroku上无法创建,因为它不会存储任何东西。
我正在查看这个示例,但它似乎已经过时,使用本地文件。 https://www.botreetechnologies.com/blog/create-and-download-zip-file-in-django-via-amazon-s3 这是我正在使用的代码片段。
from flask import Response
import boto3, zipfile, os
AWS_ACCESS_KEY_ID = "some access key"
AWS_ACCESS_SECRET_ACCESS_KEY = "some secret key"
AWS_STORAGE_BUCKET_NAME = "some bucket"
aws_session = boto3.Session(aws_access_key_id = AWS_ACCESS_KEY_ID,
aws_secret_access_key = AWS_SECRET_ACCESS_KEY)
s3 = aws_session.resource("s3")
s3 = boto3.client("s3", region_name = "some region")
s3_resource = boto3.resource("s3")
blog_folder = "blog_1"
paginator = s3.get_paginator("list_objects")
file_list = [page for page in paginator.paginate(Bucket=AWS_STORAGE_BUCKET_NAME)\
.search("Contents[?Size >`0`][]")
if blog_folder in page["Key"]]
zf = zipfile.ZipFile(byte, "w")
zipped_files = []
zip_filename = "download_files.zip"
for key in file_list:
file_name = key["Key"].split("/")[-1]
my_bucket = s3_resource.Bucket(AWS_STORAGE_BUCKET_NAME)
file_obj = my_bucket.Object(key["Key"]).get()
zipped_files.append(file_obj["Body"].read())
任何想法如何解决这个问题?对于用户来说,下载一个zip文件比单个文件更加方便。非常感谢您的帮助。
blog = Blog.query.filter_by(id = blog_id).first()
。 - MichaelRSF