You need to enable JavaScript to run this app. 使用Python boto3在AWS S3中创建文件夹并上传文件到指定目录
优惠活动
大模型
产品
解决方案
定价
更多

使用Python boto3在AWS S3中创建文件夹并上传文件到指定目录

S3上传指定目录实现方法

S3 本身不存在传统文件系统的实体文件夹,所有内容都是以「对象」形式存储,对象的键(Key)带/前缀即可模拟文件夹层级,无需提前手动创建文件夹。

修改上传代码的实现

你只需要在调用upload_file时,给第三个参数(即对象Key)拼接你想要的目录前缀即可,修改后的参考代码如下:

def upload_to_s3(self, s3_client, img_path, img_name, s3_folder="pdf_uploads/"):
    # 拼接目录前缀和文件名,作为S3中的对象键
    s3_key = f"{s3_folder}{img_name}"
    while True:
        try:
            s3_client.upload_file(img_path, AWS_S3_BUCKET, s3_key)
            break
        except Exception as e:
            print(e)

举个例子:如果你的s3_folder设为2024/report/,文件名为sales.pdf,最终文件会存在S3桶的2024/report/sales.pdf路径下,控制台会自动展示出2024 > report的文件夹层级。

(可选)提前创建空文件夹

如果你的场景需要提前创建空的文件夹占位,可以单独调用以下方法:

def create_s3_folder(self, s3_client, folder_path):
    # 文件夹路径需要以/结尾,否则会被识别为普通文件
    if not folder_path.endswith('/'):
        folder_path += '/'
    s3_client.put_object(Bucket=AWS_S3_BUCKET, Key=folder_path)

注意事项

  • 前缀的/是S3的层级分隔符,你可以自由拼接多层级路径,比如business/2024/q2/就能生成三级文件夹
  • 提前创建文件夹不是必须操作,只要上传时键带对前缀,S3会自动生成对应的层级展示
  • 拼接路径时注意不要多写或者漏写/,避免出现预期外的路径格式

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:27:02