2015-11-19 52 views
1

我试着使用Django储存在Django上传MediaFiles到S3在EC2上Django的上传MediaFiles到S3

IM,这里是我的设置:

S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME 
MEDIAFILES_LOCATION = 'media/' 
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage' 
MEDIA_URL = os.path.join(S3_URL, MEDIAFILES_LOCATION) 

我的自定义存储类:

class MediaStorage(S3BotoStorage): 
    location = settings.MEDIAFILES_LOCATION 

当我尝试上传文件时,即时获取错误500无法在nginx日志中的任何错误。

我得到了静态文件相同的配置,它工作正常。

本地主机上的一切正常工作。

+0

你使用哪个python版本? –

+0

即时通讯使用python 3.4.3 – bboumend

回答

0

我的配置也非常相似:

AWS_S3_CUSTOM_DOMAIN = os.environ.get('DJANGO_AWS_S3_CUSTOM_DOMAIN', AWS_STORAGE_BUCKET_NAME) 

MEDIAFILES_LOCATION = 'media' 
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION) 
DEFAULT_FILE_STORAGE = 'pop.storage.MediaStorage' 

和类:

class MediaStorage(S3BotoStorage): 
    location = getattr(settings, 'MEDIAFILES_LOCATION', '') 

也许它可以帮助..

用哪个插件您上传您的文件?你使用filer吗? 上传文件时网络返回什么?

+0

我没有使用任何插件,只是得到了一个FileField或ImageField,并让其余Django做,它工作正常,如果你在本地设置媒体目录,所有tuto我读过没有提及你需要额外的插件,我需要它与S3一起工作吗?网络给我一个错误500 – bboumend

+0

我不确定额外的插件,它只是该过滤器是非常有效的(易于实施)和干净。 所以你没有到达服务器。密钥是否正确,没有跨域错误等? –

+0

确切的错误:FileUploader.js:479POST https://alpha.akt.io/api/v1/artworks/ 500(内部服务器错误) 当我尝试通过django shell直接上传文件就像在文档http ://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html everythink工作正常我的文件上传到S3,可以从nginx的问题? – bboumend