1
Ich sende ein Bild, das Base64 codiert ist. Ich habe ein benutzerdefiniertes Serializerfeld für ImageField erstellt, um Base64-Codierung zu verarbeiten. Ich bin jetzt sicher, wie kann ich das Bild speichern, während eine Post-Anforderung zu tun, bevor sie durch den Serializer gehenDjango: Datei nicht gespeichert, nachdem ich zu Serializer.py gegangen bin
Unten ist mein serializers.py Codes
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)