2015-11-19 76 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