在Django REST框架(DRF)中,如何支持解序列化base64
编码的二进制数据?
我有一个模型:
class MyModel(Model):
data = models.FileField(...)
而且我希望能够以base64编码的方式发送此数据,而不是必须将表单数据分成多部分或“文件上传”。查看Parsers
,似乎只有FileUploadParser
和MultiPartParser
解析出文件。
我希望能够在JSON之类的东西发送此数据(即发送data
中的二进制数据,而不是files
:
{
'data':'...'
}
3条答案
按热度按时间e0bqpujr1#
我通过创建一个新的
Parser
解决了这个问题:然后我在
View
中使用它:cwtwac6a2#
这是一个老问题,但是对于那些寻找最新解决方案的人来说,有一个DRF插件(drf_base64)可以处理这种情况,它允许在JSON请求中阅读编码为base64字符串的文件。
假设模型如下:
和一个预期的json,如:
(des)序列化可以通过从drf_base模块而不是drf本身导入来处理。
请记住,使用FileReader API可以获得JavaScript中的base64编码文件。
rlcwz9us3#
在序列化器级别可能有一些聪明的做法,但首先想到的是在视图中进行。
步骤1:编写文件。类似于:
第2步:在模型上设置文件。类似于:
请注意步骤1中的绝对路径和步骤2中的相对于介质文件夹的路径。
这至少可以让你走了。
理想情况下,您可以将其指定为一个序列化器字段,并免费获得模型示例的验证和自动赋值,但乍一看,这似乎很复杂。