Добавление файла, в котором временно хранятся изображения, в мою корзину S3 из моего проекта django - PullRequest
0 голосов
/ 18 мая 2019

Введение:

У меня есть веб-приложение Django, которое размещено на AWS. Кроме того, мои статические и мультимедийные файлы хранятся на AWS S3. У меня в S3 2 ведра, а именно Static и Media . Все работало нормально. Теперь я хотел добавить библиотеку JavaScript, которая уменьшает изображения на стороне клиента и загружает изображения в мою медиа-папку. Мне удалось сделать это успешно на стадии разработки.

Улов:

Библиотека JavaScript использует папку (я назвал папку filepond-temp-uploads ), где она временно сохраняет изображения, пока пользователь заполняет форму, и когда форма отправляется, она сохраняет ее в папки Media и удаляет ее из папки filepond-temp-uploads

Это прекрасно работает на моей стадии разработки. Сейчас на моей стадии производства. Папки Static и Media правильно настроены в моем S3 ( См. Код ниже ). Мне нужно знать, как добавить filepond-temp-uploads папка для моего S3 в моем файле настроек Django

Мой код:

AWS_DEFAULT_ACL = None
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
DEFAULT_FILE_STORAGE = 'aws_storage_classes.MediaStorage'
AWS_STORAGE_BUCKET_NAME = 'some_aws_busket_6d'
STATICFILES_STORAGE = 'aws_storage_classes.StaticStorage'
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}

AWS_S3_DOMAIN = "%s.s3.amazonaws.com" % AWS_STORAGE_BUCKET_NAME

STATIC_URL = 'https://%s/static/' % AWS_S3_DOMAIN
MEDIA_URL = 'https://%s/media/' % AWS_S3_DOMAIN

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

У меня есть другой файл на моем корневом уровне с именем aws_storage_classes.py Ниже приведен код в этом файле

from storages.backends.s3boto import S3BotoStorage


class StaticStorage(S3BotoStorage):
    location = 'static'


class MediaStorage(S3BotoStorage):
    location = 'media'

Ниже приведен код для моих filepond-temp-uploads в моих настройках django

DJANGO_DRF_FILEPOND_UPLOAD_TMP = os.path.join(BASE_DIR, 'filepond-temp-uploads')

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'debug.log'), #This is a file created by the library. Should I add this to my S3?. I am not sure But If I can I would love to. 
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
        },
    },
    'loggers': {
        'django_drf_filepond': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
        'django': {
            'handlers': ['console'],
            'level': 'ERROR', #'DEBUG',
            'propagate': True,
        },
    },
}

TEMP_EXPIRE_MIN = 300

Я могу создать папку с именем filepond-temp-uploads в моем S3, как мне связать ее в настройках django.


Я попробовал ниже

Добавление еще одной папки с именем filepond-temp-uploads в мой aws S3 вместе с папками static и media Добавление другого класса в мой aws_storage_classes.py в моем проекте django

из хранилищ. Backends.s3boto import S3BotoStorage

class StaticStorage(S3BotoStorage):
    location = 'static'


class MediaStorage(S3BotoStorage):
    location = 'media'


class FilepondStorage(S3BotoStorage):
    location = 'filepond-temp-uploads'

Затем я изменил свой settings.py, как показано ниже

DEFAULT_FILE_STORAGE = 'aws_storage_classes.MediaStorage'
AWS_STORAGE_BUCKET_NAME = 'some_aws_busket_6d'
STATICFILES_STORAGE = 'aws_storage_classes.StaticStorage'
DJANGO_DRF_FILEPOND_UPLOAD_TMP = 'aws_storage_classes.FilepondStorage' #I added this 

и прокомментировал ниже

#DJANGO_DRF_FILEPOND_UPLOAD_TMP = os.path.join(BASE_DIR, 'filepond-temp-uploads')

Однако это не сработало. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...