Django:使用base64在DB中存储图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:使用base64在DB中存储图像相关的知识,希望对你有一定的参考价值。

models.朋友:

class Empresa(models.Model):
    logo = models.FileField(null=True)

forms.朋友:

class ConfiEmpresa(ModelForm):
    logo = forms.FileField(required=False)
    class Meta:
        model = Empresa

表单字段呈现的html输入代码如下:

<input type="file" name="logo" id="id_logo">

views.朋友:

import base64

def configempresa(request):
    if request.method == "POST":
        form = ConfiEmpresa(request.POST, request.FILES)
        print(form.errors)  # I'm not having any form error here
        if form.is_valid():
            logo = form.cleaned_data.get('logo')
            print(logo)  # It's printing "None"
            logo = base64.encodebytes(logo)
            #...rest of the view

我得到的错误:

TypeError at /Config/empresa/
expected bytes-like object, not NoneType

总而言之,我正在尝试将用户设置为'logo'的jpg文件转换为base64,以便将其存储在我的数据库中,然后对其进行解码以获取我需要的图像。

当然我做错了,我认为这是我认为的。如何处理表单字段logo的值以将其转换为base64?

我没有将原始文件存储在任何文件夹中。

答案

将标识保存在ImageField中不是更好吗?

如果您想要保存base64图像,您可以将其作为字符串保存在TextField中,如果您只想稍后显示图像。

另一答案

解决方案:

if form.is_valid():
            logo = form.cleaned_data.get('logo')
            print(logo)
            logo = base64.b64encode(logo.file.read())

以上是关于Django:使用base64在DB中存储图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 Thymeleaf 显示 Base64String 图像

在 Django Rest Framework 中接收 Base64 编码的图像并保存到 ImageField

使用 Firebase 存储上传 base64 图像

使用 Worklight SQL 适配器从 DB2 存储和检索图像?

如何使用 nodejs 获取 gif 图像帧的 base64?

将 base64 编码图像保存到 Firebase 存储