我需要向我的系统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
非常方便,但不幸的是它是为图像设计的
- 查看 python 官方文档。未找到
video
类型 - 检查
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。