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

如何使用Python boto3将本地文件夹上传到DigitalOcean Spaces

实现方案

要实现整目录上传,核心逻辑是遍历本地目录下的所有文件,保留相对路径结构作为Spaces的对象键,复用你现有的upload_file方法逐文件上传即可,完整实现代码如下:

import os
import boto3

# 初始化Spaces客户端,和你原有逻辑一致
session = boto3.session.Session()
client = session.client('s3',
                        region_name='nyc3',
                        endpoint_url='https://nyc3.digitaloceanspaces.com',
                        aws_access_key_id='替换为你的ACCESS_KEY',
                        aws_secret_access_key='替换为你的SECRET_KEY')

def upload_folder(local_folder_path, space_name, remote_prefix=""):
    """
    上传本地文件夹到指定DigitalOcean Space
    :param local_folder_path: 本地待上传的文件夹路径
    :param space_name: 目标Space名称
    :param remote_prefix: 上传到Space内的路径前缀,可选,不传则上传到Space根目录
    """
    # 遍历本地文件夹下所有文件
    for root, dirs, files in os.walk(local_folder_path):
        for file_name in files:
            # 生成本地文件的绝对路径
            local_file_path = os.path.join(root, file_name)
            # 计算文件相对于根文件夹的相对路径
            relative_path = os.path.relpath(local_file_path, local_folder_path)
            # 转换为Spaces支持的/分隔的对象键,拼接远程前缀
            s3_key = os.path.join(remote_prefix, relative_path).replace(os.sep, '/')
            
            # 执行上传
            client.upload_file(local_file_path, space_name, s3_key)
            print(f"已上传: {local_file_path} -> {space_name}/{s3_key}")

# 调用示例
if __name__ == "__main__":
    # 示例:将本地的my_local_folder文件夹,上传到my-space的remote_dir目录下
    upload_folder(local_folder_path="./my_local_folder", space_name="my-space", remote_prefix="remote_dir")
    # 如果要直接上传到Space根目录,改为:
    # upload_folder(local_folder_path="./my_local_folder", space_name="my-space", remote_prefix="")

注意事项

  • DigitalOcean Spaces和S3一样没有真实的文件夹概念,通过对象键中的/模拟目录层级,无需提前创建目录,上传文件时会自动生成对应的层级展示
  • 空文件夹不会被自动上传,只有包含文件的目录才会在Spaces中展示对应的层级
  • 可以根据需求在遍历文件时添加过滤逻辑,比如跳过隐藏文件、指定后缀的文件等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:03