我使用以下模型将文件存储在 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):
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()
(我使用图像作为测试文件,当运行上面的代码时,我无法打开这样的图像,它不正确)。我做错了什么?