Django Encrypt FileField with Fernet object has no attribute '_committed' 发生
Django Encrypt FileField with Fernet object has no attribute '_committed' occurred
我正在将多个 pdf 上传从表单传递到视图中。 (使用 Uppy.XHRUpload)
我想在将它们保存到模型中之前对其进行加密。
当我测试文件时,它们可以被加密并保存到文件中,然后读取和解密就可以了。
但是当我尝试添加到模型时,我得到:
'bytes' object has no attribute '_committed' occurred.
我可以下载加密文件,重新读取然后保存,但那样会很浪费。
我认为这会很简单:
if request.method == 'POST' and request.FILES:
files = request.FILES.getlist('files[]')
for index, file in enumerate(files):
f = Fernet(settings.F_KEY)
pdf = file.read()
encrypted = f.encrypt(pdf)
PDF_File.objects.create(
acct = a,
pdf = encrypted
)
模型。
class PDF_File(models.Model):
acct = models.ForeignKey(Acct, on_delete=models.CASCADE)
pdf = models.FileField(upload_to='_temp/pdf/')
感谢您的帮助。
这是因为您无法将加密(字节)保存到模型
试试这个
from django.core.files.base import ContentFile
for index, file in enumerate(files):
f = Fernet(settings.F_KEY)
pdf = file.read()
encrypted = f.encrypt(pdf)
content_file = ContentFile(encrypted, name=your_filename)
PDF_File.objects.create(
acct = a,
pdf = content_file
)
从这里参考 https://docs.djangoproject.com/en/4.0/topics/http/file-uploads/
我正在将多个 pdf 上传从表单传递到视图中。 (使用 Uppy.XHRUpload)
我想在将它们保存到模型中之前对其进行加密。
当我测试文件时,它们可以被加密并保存到文件中,然后读取和解密就可以了。
但是当我尝试添加到模型时,我得到:
'bytes' object has no attribute '_committed' occurred.
我可以下载加密文件,重新读取然后保存,但那样会很浪费。
我认为这会很简单:
if request.method == 'POST' and request.FILES:
files = request.FILES.getlist('files[]')
for index, file in enumerate(files):
f = Fernet(settings.F_KEY)
pdf = file.read()
encrypted = f.encrypt(pdf)
PDF_File.objects.create(
acct = a,
pdf = encrypted
)
模型。
class PDF_File(models.Model):
acct = models.ForeignKey(Acct, on_delete=models.CASCADE)
pdf = models.FileField(upload_to='_temp/pdf/')
感谢您的帮助。
这是因为您无法将加密(字节)保存到模型
试试这个
from django.core.files.base import ContentFile
for index, file in enumerate(files):
f = Fernet(settings.F_KEY)
pdf = file.read()
encrypted = f.encrypt(pdf)
content_file = ContentFile(encrypted, name=your_filename)
PDF_File.objects.create(
acct = a,
pdf = content_file
)
从这里参考 https://docs.djangoproject.com/en/4.0/topics/http/file-uploads/