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
使用 Worklight SQL 适配器从 DB2 存储和检索图像?