Мне удалось нормально отправить видео на локальный компьютер, но когда я изменил настройки хранилища, я просто начал получать эту ошибку.
Ошибка указывает на строку, где код
instance.file.save(file_name_m3u8, file_m3u8)
А затем сразу указывает на
# .../python3.8/site-packages/storages/backends/s3boto3.py
# ...
obj.upload_fileobj(content, ExtraArgs=params)
# ...
Мой файловый объект file_m3u8
:
file_object
<_io.TextIOWrapper name='/tmp/media/lectures/first_video_2/2020-04-04_16-11-20.m3u8' mode='r' encoding='UTF-8'>
Простой пример:
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.core.files import File
from .models import Lecture
@receiver(post_save, sender=Lecture)
def handle_video_upload (sender, instance, created, ** kwargs):
with open (
"/tmp/media/lectures/first_video_2/2020-04-04_16-11-20.m3u8", "r") as file_object:
file_m3u8 = File (
name = "media/lectures/first_video_2/2020-04-04_16-11-20.m3u8",
file = file_object)
instance.file.save ("2020-04-04_16-11-20.m3u8", file_m3u8)
завершить код: https://pastebin.com/xVc3gbCK
Опять же: когда я удаляю все настройки хранилища s3 и boto и использую локальное хранилище, все отлично работает
PS: переменные в настройках. py:
# STATIC AWS+CLOUDFRONT
STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
AWS_ACCESS_KEY_ID = config("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = config("AWS_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = config("AWS_STORAGE_BUCKET_NAME")
CLOUDFRONT_ID = config("CLOUDFRONT_ID")
CLOUDFRONT_DOMAIN = f"{CLOUDFRONT_ID}.cloudfront.net"
AWS_S3_CUSTOM_DOMAIN = f"{CLOUDFRONT_ID}.cloudfront.net"
PS2: я также могу загрузить другие файлы на s3, но это не работает, когда я пытаюсь отправить .m3u8.