img framework python django image filefield

python - framework - img base64



Guarda la imagen base64 en el campo del archivo django (3)

Tengo entrada siguiente

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7YAAAISCAIAAAB3YsSDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAA5JxJREFUeNrsnQl4FEX6xqcJJEAS7ivhBkMAQTSJ4h0QEQ+I90rAc1cOL3QBXXV1AV1dVwmrsCqQ9VwJ6HoC7oon0T8iEkABwRC5IeE+kkAIkPT/nfmSmprunskk5CDw/p55hu7qOr76api8........"

Quiero guardar este archivo en el campo de archivo. ¿Que puedo hacer?

modelos.py

class SomeModel(models.Model): file = models.FileField(upload_to=get_upload_report) created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True)

Estoy tratando de hacer esto

def get_file(data): from django.core.files import File return File(data)

y guardar el archivo de retorno a la instancia del modelo

somemodel.file = get_file(image_base64_data)

pero da un error siguiente

AttributeError at /someurl/ ''File'' object has no attribute ''decode''



import base64 from django.core.files.base import ContentFile format, imgstr = data.split('';base64,'') ext = format.split(''/'')[-1] data = ContentFile(base64.b64decode(imgstr), name=''temp.'' + ext) # You can save this as file instance.

Usa este fragmento de código para decodificar la cadena base64.


import base64 from django.core.files.base import ContentFile image_data = requestData[''user''][''image''] format, imgstr = image_data.split('';base64,'') print("format", format) ext = format.split(''/'')[-1] data = ContentFile(base64.b64decode(imgstr)) file_name = "''myphoto." + ext user.image.save(file_name, data, save=True) # image is User''s model field