1
base64でエンコードされた画像を送信しています。私はBase64エンコーディングを処理するImageField用のカスタムシリアライザフィールドを作成しました。私は今、シリアライザを通過する前にポストの要求をしている間、私は、画像を保存する方法を確認していDjango:Serializer.pyに行った後にファイルが保存されない
以下は私のserializers.pyコードです
from rest_framework import serializers
from .models import Photo
import base64
from django.core.files.base import ContentFile
from rest_framework import serializers
import pdb;
class PhotoSerializer(serializers.ModelSerializer):
image = serializers.ImageField('from_native')
class Meta:
model = Photo
fields = ('photoname', 'image')
def from_native(self, data):
if isinstance(data, basestring) and data.startswith('data:image'):
# base64 encoded image - decode
format, imgstr = data.split(';base64,')
print(imgstr)# format ~= data:image/X,
ext = format.split('/')[-1] # guess file extension
data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext)
return super(Base64ImageField, self).from_native(data)