Django的媒体上传到AS3(Django media uploads to AS3)

2019-10-17 07:41发布

我想上传所有Django的媒体文件(从管理面板上传)到Amazon S3。 因此,设置文件是这个样子:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'tastypie',
'core',
'advertisment',
'storages',

)

  DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
  AWS_ACCESS_KEY_ID = 'xxx' 
  AWS_SECRET_ACCESS_KEY = 'xxx'
  AWS_STORAGE_BUCKET_NAME = 'media'
  MEDIA_URL = 'https://s3.amazonaws.com/%s/' % AWS_STORAGE_BUCKET_NAME

当我尝试从管理面板上传文件,我得到以下错误:

S3ResponseError: 403 Forbidden

我检查这个答案,但依然没有帮助

Answer 1:

你有没有安装博托 ,因为Django的存储对伯特的依赖?

然后,你将有以下内容添加到您的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 = os.environ.get('S3_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 S3本身。

我希望它能帮助

注:出于安全原因,它是一个好主意,你的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY添加为环境变量,而不是仅仅直接写下来的setting.py。



Answer 2:

首先你需要安装在你的settings.py,你把你的媒体文件的媒体网址。 本文帮助您设置您的媒体文件在AWS https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-媒体文件/



文章来源: Django media uploads to AS3