2017-09-27 43 views
0

保存base64字符串到文件系统我试图上传图像到文件系统使用python django。我没有任何想法如何进一步进行。Django使用models.ImageField

在我model.py:

Class Test(object): 
    mission = models.TextField(blank=True) 
    image = models.ImageField(upload_to='documents/images/',blank=True) 
    account = models.OneToOneField(Account, related_name='account') 

在我view.py

def add_image(request, account): 
    req = get_request_json(request) 
    data = Test.objects.add_image(account, req) 

在我manager.py

Class TestManager(models.Manager): 
    def add_image(self, account, input): 
     acc = self.get(account=account) 
     acc.save() 

     return acc; 

但我不知道如何从出发这里。

我想知道如何将base64图像字符串保存到指定的位置并将路径/文件名存储在数据库中?

我已经与python合作,我将文件写入目录并获取路径并存储在数据库中。在这里我想使用django选项。我不得不用其他文件格式重复相同的过程。

回答

0

如果以base64字符串格式的图像,并且希望将其保存到一个模型的ImageField,这是我会做什么

import base64 

image_b64 = request.POST.get('image') # This is your base64 string image 
format, imgstr = image_b64.split(';base64,') 
ext = format.split('/')[-1] 
data = ContentFile(base64.b64decode(imgstr), name='temp.' + ext) 

现在,你可以简单地做

Test.objects.create(image=data) 
+0

我如果删除了'base64.b64decode'并且使用了'data-ContentFile(base64.b64decode(imgstr),name ='temp。'+ ext)' –

+0

,那么这个错误'string参数应该只包含ASCII字符' = ContentFile(imgstr,name ='temp。'+ ext)'发生此错误不是JSON serializabl e' –