Enregistrer l'image base64 dans le champ de fichier django
j'ai l'entrée suivante
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7YAAAISCAIAAAB3YsSDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAA5JxJREFUeNrsnQl4FEX6xqcJJEAS7ivhBkMAQTSJ4h0QEQ+I90rAc1cOL3QBXXV1AV1dVwmrsCqQ9VwJ6HoC7oon0T8iEkABwRC5IeE+kkAIkPT/nfmSmprunskk5CDw/p55hu7qOr76api8........"
je veux enregistrer ce fichier dans le champ fichier. Que puis-je faire?
models.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)
je suis en train de le faire
def get_file(data):
from django.core.files import File
return File(data)
et enregistrer le fichier de retour à l'instance de modèle
somemodel.file = get_file(image_base64_data)
mais il donne une erreur suivante
AttributeError at /someurl/
'File' object has no attribute 'decode'
22
demandé sur
NIKHIL RANE
2016-09-19 17:53:31
3 réponses
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.
utilisez ce code pour décoder la chaîne base64.
24
répondu
Vaibhav Mule
2017-07-26 14:58:04
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
8
répondu
Abhisek
2017-12-29 07:40:07
cette question semble devoir aider: Django - comment créer un fichier et le sauvegarder dans le champ de fichier d'un modèle?
vous devriez être en mesure de décoder la chaîne base64 et fournir que comme l'argument content
à FieldFile.save
:
3
répondu
souldeux
2017-05-23 12:25:30