是否可以从请求帖子加密文件?怎么样?
files = request.FILES[files]
gpg = gnupg.GPG(homedir='/home/XXXX/.gnupg')
gpg.encrypt(files) <-- This do exception
例外:
'InMemoryUploadedFile'对象没有属性'encode'
答案 0 :(得分:0)
如the documentation所述,您应该将字符串传递给encrypt(),而不是文件。 encrypt()当然试图通过尝试在参数上调用.encode()来获取编码的字符串。
您可以找到加密文件here的示例。
答案 1 :(得分:0)
我找到了解决方案:
def encrypt(self, files):
gpg = gnupg.GPG(gnupghome='/home/XXXX/.gnupg')
encrypted = gpg.encrypt_file(files, recipients='mail@mail.com', passphrase='secret')
f = tempfile.NamedTemporaryFile(delete=False)
name = f.name
f.write(encrypted.data)
f.close()
return open(name, 'r+b')
def decrypt(self, files):
gpg = gnupg.GPG(gnupghome='/home/XXXX/.gnupg')
result = gpg.decrypt(files.content).data
return result