Как изменить имя изображения и сохранить его, когда я загружаю изображение в s3 с помощью boto3

#javascript #python #amazon-web-services #amazon-s3 #boto3

Вопрос:

Как изменить имя изображения и сохранить его, когда я загружаю изображение в s3 с помощью boto3.

бывший) datetime.jpg

мольбы о помощи….

 @app.route('/fileupload', methods=['POST'])
def file_upload():
    file = request.files['file']
    s3 = boto3.client('s3',
                      aws_access_key_id="mykey",
                      aws_secret_access_key="myaccesskey"
                      )
    s3.put_object(
        ACL="public-read",
        Bucket="burket",
        Body=file,
        Key=file.filename,
        ContentType=file.content_type)
    print(url)
    return jsonify({'result': 'success'})
 
 function save() {
    let form_data = new FormData($('#upload-file')[0]);
    $.ajax({
        type: 'POST',
        url: '/fileupload',
        data: form_data,
        processData: false,
        contentType: false,
        success: function (data) {
            alert("success!");
        },
    });
}
 

Я думаю, мы можем использовать этот код.
Но его нельзя было использовать.

 extension = file.filename.split('.')[-1]
today = datetime.now()
mytime = today.strftime('%Y-%m-%d-%H-%M-%S')

filename = f'file-{mytime}'

 

Комментарии:

1. Укажите любой ключевой параметр, который вам нравится, при вызове put_object. Вам не нужно использовать загруженное имя файла.

2. Key Параметр существует для той же цели — нет необходимости переименовывать сам файл.

Ответ №1:

Вы можете переименовывать объекты после загрузки в s3.

 client.copy_object(Bucket="BucketName", CopySource="BucketName/OriginalName", Key="NewName")
client.delete_object(Bucket="BucketName", Key="OriginalName")