Проблема с загрузкой изображений в ведро S3 из приложения Django

Моя проблема в том, что изображения, хранящиеся в папке media, не передаются в S3 Bucket. Я протестировал с другим файлом из запроса, и файл был передан, поэтому я предполагаю, что settings.py должен быть в порядке.

Из файла views.py ->

Это работает:

if request.method == 'POST':
    imageFile = request.FILES['images']
    upload = Upload(file=imageFile)
    upload.save()
    image_url = upload.file.url
    print(image_url)

Это не работает:

for i in os.listdir(folder):
        f = os.path.join(conf_settings.MEDIA_ROOT,company, i)
        upload = Upload(file=f)
        upload.save()

Ошибки нет, но он просто не работает.

Это также не работает:


for i in os.listdir(folder):
    with open(os.path.join(folder, i)) as f:
        upload = Upload(file=f)
        upload.save()

>The error I am getting is:
>
>Exception Value:   
>'_io.TextIOWrapper' object has no attribute '_committed'
>
>at                 upload.save() 

Это мой файл storage_backend.py

from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage



class MediaStorage(S3Boto3Storage):
    location = 'media'
    default_acl = 'public-read'
    file_overwrite = True

Это мой model.py

class Upload(models.Model):

    uploaded_at = models.DateTimeField(auto_now_add=True)
    file = models.FileField()

Я загружаю .ZIP-файл с изображениями. Распаковываю его и сохраняю их в папку media, затем хочу загрузить из папки media в S3 Bucket. Эта операция не удается.

Файл в request.FILES - это Zip-файл, который я использую для проверки того, что все settings.py для AWS должны быть корректными, потому что они передаются правильно.

Я думаю, что моя проблема связана с тем, как я читаю файл и передаю его.

После многих часов работы.... это действительно сработало. Хотя передача немного медленная, я уверен, что должен быть лучший способ.

https://stackoverflow.com/a/53260957/11116189

Вернуться на верх