Проблема с загрузкой изображений в ведро 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 должны быть корректными, потому что они передаются правильно.
Я думаю, что моя проблема связана с тем, как я читаю файл и передаю его.
После многих часов работы.... это действительно сработало. Хотя передача немного медленная, я уверен, что должен быть лучший способ.