如何在调用S3的put_object接口时指定桶内文件夹路径写入JSON文件
核心实现逻辑
Amazon S3 本身没有原生的文件夹层级结构,你看到的桶内"目录"是平台通过对象的Key前缀模拟生成的虚拟结构,所以put_object不需要额外的目录参数,直接把目标路径拼接进Key参数即可实现指定目录上传。
代码修改方案
你要上传到/json/latest目录下,只需要在原有的Key前拼接对应的路径前缀即可,参考修改后的代码:
# 定义目标S3路径前缀,末尾必须加斜杠/ s3_target_prefix = "json/latest/" # 拼接前缀和处理后的文件名,得到完整的Key full_s3_key = f"{s3_target_prefix}{path.replace(' ', '_')}" # 执行上传 s3.put_object(Bucket=bucket, Key=full_s3_key, Body=contents)
注意事项
- 路径前缀末尾必须加斜杠
/,否则前缀会被识别为文件名的一部分,比如漏加斜杠会生成json/latestyour_file.json这类不符合预期的文件名 - 不需要提前在S3桶内创建
json/latest目录,上传后S3会自动根据Key前缀生成对应的虚拟目录结构展示 - 如果需要让JSON文件在访问时被正确识别为JSON格式,可额外添加
ContentType参数,避免默认被识别为二进制文件:
s3.put_object(Bucket=bucket, Key=full_s3_key, Body=contents, ContentType='application/json')
内容的提问来源于stack exchange,提问作者Kulwant
相关产品推荐
相关产品推荐

