You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用boto3将文件上传到S3存储桶内按日期命名的指定文件夹

S3按日期前缀上传文件实现方案

核心前提说明

Amazon S3是对象存储服务,没有传统文件系统的实体文件夹。你在控制台看到的文件夹层级,是S3根据对象Key的/分隔符自动生成的虚拟结构。只要上传时指定带完整日期前缀的对象Key,就能自动生成对应的日期文件夹展示,无需提前调用接口创建文件夹。

最简实现代码(适配你的原有上传逻辑)

你仅需要调整object_name的生成规则,在文件名前拼接日期前缀即可,原有upload_file逻辑无需修改:

import boto3
from datetime import datetime

# 初始化S3客户端(你原有初始化逻辑保持不变即可)
s3_client = boto3.client('s3')

# 自定义参数
file_name = "你要上传的本地文件名"
bucket = "你的S3存储桶名称"

# 生成 年/月/日 格式的日期前缀,月、日自动补前导零
today = datetime.today()
date_prefix = f"{today.year}/{today.month:02d}/{today.day:02d}/"
# 拼接完整的S3对象路径
object_name = f"{date_prefix}{file_name}"

# 直接调用原有上传方法即可
response = s3_client.upload_file(file_name, bucket, object_name)

上传完成后,S3控制台会自动展示年/月/日的层级文件夹,和手动创建的文件夹使用体验完全一致。

特殊场景:如需提前创建空文件夹占位

如果你有业务场景需要预先创建当天的空文件夹,可以额外调用put_object接口上传一个大小为0的占位对象即可:

# 预先创建日期文件夹(非必须,仅特殊场景使用)
s3_client.put_object(
    Bucket=bucket,
    Key=date_prefix # 注意前缀结尾必须带/,才会被识别为文件夹
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:15:06