python - Django 使用 models.ImageField 将 base64 字符串保存到文件系统

标签 python django image imagefield

我正在尝试使用 python django 将图像上传到文件系统。我不知道如何进一步进行。

在我的 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')

在我看来.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 选项。

我也必须对其他文件格式重复相同的过程。

最佳答案

如果你有一个 base64 字符串格式的图像并且你想将它保存到模型 ImageField,这就是我要做的

import base64
from django.core.files.base import ContentFile

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)

关于python - Django 使用 models.ImageField 将 base64 字符串保存到文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46446987/

相关文章:

django - IntegrityError 重复键值违反唯一约束 - django/postgres

php - 是否可以使用 PHP 获取图像鼠标单击位置?

c# - ASP.NET:上传前验证文件大小(宽度和高度)

python - 刚开始编写 Fabric 文件来安装包

python - 使用 numpy 从过滤、排序的数组返回索引

python - Visual Studio Code : OSError: [Errno 30] Read-only file system while trying to install pylint on Linux Mint

javascript - 第一次请求加载json数据并显示在首页

python - 匹配两个几乎相同的列表的元素

mysql - 我使用django和mysql,但是使用DateTimeField时时间不对

python - 如何使用 Tesseract 对图像进行 OCR