Как обрабатывать и отправлять различные типы файлов (изображения, видео, аудио, PDF, документы) в Django Chat App с помощью WebSockets и Django REST Framework

Я работаю над приложением для чата, где мне нужно обрабатывать и хранить различные типы файлов, такие как изображения, видео, аудио, PDF и документы, используя Django и Django REST framework. У меня есть потребитель WebSocket с такими событиями, как подключение, отключение и получение. В событии receive я пытаюсь обработать видеофайлы. Вот упрощенная версия моего кода:

    # consumers.py
    async def video(self, event):
        stream = File(BytesIO(event['file']), name=event['file_name'])
        data = JSONParser().parse(stream)
        event['file'] = data
        await self.send(text_data=json.dumps(event))
# serializers.py
from drf_extra_fields.fields import Base64FileField, 
Base64ImageField
import filetype

class MyBase64FileField(Base64FileField):

    ALLOWED_TYPES = ['pdf', 'docx','doc','mp3','mp4','mov']

    def get_file_extension(self, filename, decoded_file):
        extension = filetype.guess_extension(decoded_file)
        return extension

    def to_internal_value(self, data):
        if isinstance(data, str):
            return super().to_internal_value(data)
        return data

class MessageSerializer(serializers.ModelSerializer):
    image = Base64ImageField(required=False)
    file = MyBase64FileField(required=False)
    class Meta:
        model = ChannelMessages
        fields = '__all__'

I'm facing issues with sending video files over the WebSocket. What changes do I need to make in my code to handle video files properly and send them over the WebSocket? Additionally, I'm looking for a solution that allows me to handle and send other file types like images, audios, PDFs, and documents as well.
Вернуться на верх