使用Python将文件上载到S3(保持原始文件夹结构),MIME类型正确

2024-09-27 20:16:02 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,如果ContentType未显式设置,boto3将使用Content-Type: binary/octet-stream将文件上载到s3。当使用s3作为静态宿主时,这是不好的。到现在为止,there is PR是为了这个。在


Tags: 文件streams3istype静态情况pr
1条回答
网友
1楼 · 发布于 2024-09-27 20:16:02
import boto3
import os
import mimetypes

def upload_files(path):
    session = boto3.Session(
        aws_access_key_id='YOUR_AWS_ACCESS_KEY_ID',
        aws_secret_access_key='YOUR_AWS_SECRET_ACCESS_KEY_ID',
        region_name='YOUR_ACCOUNT_REGION'
    )
    s3 = session.resource('s3')
    bucket = s3.Bucket('YOUR_BUCKET_NAME')

    for subdir, dirs, files in os.walk(path):
        for file in files:
            full_path = os.path.join(subdir, file)
            file_mime = mimetypes.guess_type(file)[0] or 'binary/octet-stream'
            with open(full_path, 'rb') as data:
                bucket.put_object(Key=full_path[len(path)+1:], Body=data, ContentType=file_mime)

if __name__ == "__main__":
    upload_files('/path/to/your/folder')

相关问题 更多 >

    热门问题