将文件存储为数据库中的base64编码字符串

时间:2013-07-05 07:44:42

标签: python django django-models

我使用以下模型将文件存储在django app中的数据库中:

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()

(我用图像作为测试文件,当在代码上面运行时,我无法打开这样的图像,这是不正确的)。 我错了什么?

0 个答案:

没有答案