Python 将文件作为base64编码字符串存储在数据库中
我使用以下模型在django应用程序的数据库中存储文件:Python 将文件作为base64编码字符串存储在数据库中,python,django,django-models,Python,Django,Django Models,我使用以下模型在django应用程序的数据库中存储文件: class Data(BaseModel): _data = models.TextField( db_column='data', blank=True) def set_data(self, data): self._data = base64.encodestring(data) def get_data(self): ret
class Data(BaseModel):
_data = models.TextField(
db_column='data',
blank=True)
def set_data(self, data):
self._data = base64.encodestring(data)
def get_data(self):
return base64.decodestring(self._data)
item = models.OneToOneField(Item)
data = property(get_data, set_data)
我可以轻松地保存这些对象,而不会出现任何问题:
form = ItemForm(request.POST)
if form.is_valid():
try:
file = request.FILES['file']
except MultiValueDictKeyError:
errors = form._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.util.ErrorList())
errors.append("select file")
else:
item = form.save()
item.filename = file.name
item.save()
blob = Data(item=item)
blob.data = file.read()
blob.save()
然而,我无法读取这样的编码数据。我尝试使用以下方法将此类文件保存到文件系统:
#save test
new_filename = 'new_%s'%(item.filename,)
a = open(new_filename,'w')
a.write(blob.data)
a.close()
我使用了一个图像作为测试文件,当运行上面的代码时,我无法打开这样的图像,它是不正确的。
我做错了什么?在pythonhower中使用文件时,我无法读取此类编码数据。进一步解释。当我试图将这些数据保存到与原始文件同名的文件中时,例如,数据是不相关的损坏图像。我检查了在执行a.writeblob.data时保存的数据,其中包含一些未正确解码的base64。不知道为什么