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

如何在Django中正确配置Backblaze B2作为媒体文件存储?

解决Django媒体文件无法上传至Backblaze B2的问题

以下是针对你的配置问题的修正方案,按步骤调整:

1. 修正依赖包配置

你的INSTALLED_APPS里添加的是boto,但使用S3Boto3Storage需要依赖boto3,替换成:

INSTALLED_APPS = [
    # ... 其他应用
    'storages',
    'boto3',
]

同时确保已安装对应依赖:

pip install boto3 django-storages

2. 完善S3兼容配置项

Backblaze B2的S3兼容模式需要补充关键配置,修正你的STORAGES及相关参数:

STORAGES = {
    "default": {
        "BACKEND": "storages.backends.s3boto3.S3Boto3Storage",
        "OPTIONS": {
            "region_name": AWS_S3_REGION_NAME,
            "endpoint_url": AWS_S3_ENDPOINT_URL,
            "aws_access_key_id": AWS_ACCESS_KEY_ID,
            "aws_secret_access_key": AWS_SECRET_ACCESS_KEY,
            "bucket_name": AWS_STORAGE_BUCKET_NAME,
        },
    },
    "staticfiles": {
        "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
    },
}

# Backblaze B2 核心配置
AWS_ACCESS_KEY_ID = "<my_backblaze_application_keyID>"
AWS_SECRET_ACCESS_KEY = "<my_backblaze_applicationKey>"
AWS_STORAGE_BUCKET_NAME = "<my_public_bucket_name>"
AWS_S3_REGION_NAME = "<region_set_by_backblaze>"  # 格式示例:'us-west-001'
AWS_S3_ENDPOINT_URL = f"https://s3.{AWS_S3_REGION_NAME}.backblazeb2.com"
AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_S3_REGION_NAME}.backblazeb2.com"

# 公开桶适配配置
AWS_S3_FILE_OVERWRITE = False
AWS_QUERYSTRING_AUTH = False  # 避免生成带签名的URL
AWS_S3_OBJECT_PARAMS = {
    'ACL': 'public-read',  # 匹配公开桶的权限设置
}

# 修正MEDIA_URL指向Backblaze域名
MEDIA_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/media/"

3. 验证权限与桶设置

  • 确认Backblaze应用密钥拥有写入目标桶的权限(创建密钥时需勾选"Write Files"和"Delete Files")
  • 确认桶的区域与AWS_S3_REGION_NAME完全一致(可在Backblaze控制台的桶详情页查看)
  • 若为私有桶,需将AWS_S3_OBJECT_PARAMS的ACL改为private,并额外处理媒体文件的访问逻辑

4. 测试上传

启动Django服务后尝试上传媒体文件,查看Backblaze控制台的桶内是否出现media/前缀的文件。若仍失败,可查看Django日志排查认证或权限类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:30:15