django - 我可以使用 django 的 digital ocean 空间来存储用户上传的文件吗?

标签 django file-upload digital-ocean

我希望有一个图像、javascript、css 等的中心位置,以便在我的 Django 应用程序上启用水平缩放。

目前我正在查看 DigitalCcean 空间,但是在他们的指南中似乎只能使用以下方式手动上传文件:

python manage.py collectstatic

有人有使用 DigitalOcean 空间处理媒体文件的经验吗?我基本上想确保在一台服务器上上传的文件可以由另一台服务器访问。

提前致谢!

最佳答案

是的,您可以像这样在 settings.py 文件上设置默认文件存储

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

它将自动在您的 digitalocean 空间文件夹中创建一个媒体文件夹。用户上传的任何内容(例如帖子中的图片)都将存储在媒体文件夹中,无需额外配置,只需在配置后添加该行即可,如下所示。由于某种原因,一些提供的 digitalocean 教程没有提到这一点。

AWS_ACCESS_KEY_ID = 'your-spaces-access-key'
AWS_SECRET_ACCESS_KEY = 'your-spaces-secret-access-key'
AWS_STORAGE_BUCKET_NAME = 'your-storage-bucket-name'
AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'your-spaces-files-folder'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'mysite/static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

关于django - 我可以使用 django 的 digital ocean 空间来存储用户上传的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60765418/

相关文章:

python - Django 外键分配

ruby - 文件还在上传吗?

symfony - 如何将 Dockerized Symfony 应用程序部署到 Digital Ocean

python - 同一模型的多个版本的 django 管理页面

javascript - 使用 Ajax 驱动的进度条上传 Django 文件

python - 有没有一种简单的方法可以使列表表现为文件(使用 ftplib)

spring - Grails 文件上传问题

SSL Forge、Cloudflare 和 Digital Ocean

django - Redis+Django 在云服务器上使用 ubuntu 18.04 导致服务器错误(500)

python - Apache virtualenv 和 mod_wsgi : ImportError : No module named 'django'