5

我一直在尝试研究如何让 AWS S3 与 Heroku 一起用于 FileField 和 ImageField 上传。但我一直未能让它工作。

该计划是

  1. 使用 FileField 上传一些文件。
  2. 将 ImageField 用于个人资料图片。
  3. 使用 Sorl 缩略图调整这些图片的大小。

我关注了这篇文章,但它似乎不起作用。有什么我想念的吗?我想要文件上传,尽可能轻松。有没有比 AWS 对 django 和 heroku 更友好的更好选择?在这方面的任何帮助将不胜感激。

4

1 回答 1

9

使用Django 存储管理 S3 上的静态文件。然后在部署时遵循Heroku 静态资产指南

首先,使用 AWS 控制台或您喜欢的工具在 S3 中创建一个存储桶。然后,修改您的 settings.py 并添加以下值:

import os

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = '<YOUR BUCKET NAME>'

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

请注意,我们使用环境变量来存储 AWS 访问密钥和密钥。当我们讨论这个主题时,如果您打算开源您正在部署的 Django 应用程序,请考虑将您的 SECRET_KEY 存储在环境变量中。

以上来自这里

于 2012-10-07T08:15:18.853 回答