【发布时间】:2022-01-24 07:03:40
【问题描述】:
我的 FLASK api 中有一个路由,它将图像上传到我的 s3 存储桶,然后将 url 保存到用户对象上的 avatar_url 字段。
@bp.route('/user/<userid>/files-upload', methods=['POST'])
def upload_file(userid):
user = db_session.query(User).get(userid)
img = request.files['file']
if img:
filename = secure_filename(img.filename)
img.save(filename)
s3.upload_file(
Bucket = bucket,
Filename = filename,
Key = filename,
ExtraArgs={
"ACL": 'public-read',
"ContentType": img.content_type
}
)
msg = "Upload Done ! "
url = f'https://{bucket}.s3.amazonaws.com/{filename}'
user.avatar_url = url
try:
db_session.commit()
return user_schema.dumps(user)
except:
db_session.rollback()
raise
这很好用,但后来我意识到如果用户多次更改他们的图片,这可能会导致一堆未使用的文件闲置并堵塞我的存储桶。我想我需要起草一些删除旧文件的功能(如果有的话)?然后保存新文件?任何建议将不胜感激。
【问题讨论】:
-
您可以创建一个更改按钮来删除该用户的所有文件。当用户想要更改他的图片时,他会删除所有旧文件,然后上传一个新文件。
标签: python amazon-web-services flask amazon-s3