Implement Base64VideoField Django REST



我需要向我的系统POST一个二进制文件。为此,我必须将其转换为 base64 . 我已经看到了将pdf文件解析到系统的示例,并认为mp4应该不会有很大的不同。

我的尝试:
1. 与Base64ImageField核实

class Base64ImageField(Base64FieldMixin, ImageField):
    """
    A django-rest-framework field for handling image-uploads through raw post data.
    It uses base64 for en-/decoding the contents of the file.
    """
    ALLOWED_TYPES = (
        "jpeg",
        "jpg",
        "png",
        "gif"
    )
    INVALID_FILE_MESSAGE = _("Please upload a valid image.")
    INVALID_TYPE_MESSAGE = _("The type of the image couldn't be determined.")
    def get_file_extension(self, filename, decoded_file):
        extension = imghdr.what(filename, decoded_file)
        extension = "jpg" if extension == "jpeg" else extension
        return extension

imghdr非常方便,但不幸的是它是为图像设计的

  1. 查看 python 官方文档。未找到video类型
  2. 检查opencv 。它向我显示了打开的能力,但我只想检查扩展程序。虽然opencv能够播放该文件。这并不意味着它是 Web 浏览器支持的扩展。

照原样:

class Base64VideoField(Base64FileField):
    ALLOWED_TYPES = ['mp4', ]
    def get_file_extension(self, filename, decoded_file):
        # TODO: Do something that validate the user input!
        return 'mp4'

问题:
如何正确实施Base64VideoField

您可以使用同一库中的 Base64FileField 并更新视频文件的ALLOWED_TYPES。

最新更新