下面介紹如何在基於Django(drf也)API端的post請求中處理Base64編碼的圖像文件,並將其保存爲ImageField。
讓說你有一個型號如下:
Class MyImageModel(models.Model):
image = models.ImageField(upload_to = 'geo_entity_pic')
data=model.CharField()
所以相應的串行器將如下:
from drf_extra_fields.fields import Base64ImageField
Class MyImageModelSerializer(serializers.ModelSerializers):
image=Base64ImageField()
class meta:
model=MyImageModel
fields= ('data','image')
def create(self, validated_data):
image=validated_data.pop('image')
data=validated_data.pop('data')
return MyImageModel.objects.create(data=data,image=image)
相應的視圖可以如下:
elif request.method == 'POST':
serializer = MyImageModelSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
return Response(serializer.errors, status=400)
注意在序列化程序中,我使用了模塊中提供的Base64ImageField的實現
要安裝該模塊運行命令
pip install django-extra-fields
導入相同,完成!
將您的圖像作爲JSON對象中的Base64編碼字符串以及您擁有的任何其他數據發送(通過post方法)。
你有沒有想過這個? – 2013-09-03 05:28:05
是的,沒有。我將圖像作爲文本存儲,然後將其呈現在網頁上非常簡單,在'img'標記中放入'src =「data:image/png; base64,<您的base64字符串>。我不確定這是最好的方式,但它工作正常並且易於實施。 – gozzilli 2013-09-03 15:41:29
@gozzilli您能否提供基於base64解決方案的視圖/序列化器/模型? – andi 2014-07-22 22:41:21