python – 通过django存储boto s3将二进制数据保存到模型上的文
发布时间:2020-12-16 22:59:13 所属栏目:Python 来源:网络整理
导读:我从echosign API中提取了一个pdf,它给了我一个文件的字节. 我正在尝试将这些字节保存到boto s3支持的FileField中.我运气不好. 这是我得到的最接近的,但它在保存’发言人’时出错,而写入S3的pdf似乎已损坏. 这里扬声器是我的模型的一个实例,fileData是从echo
我从echosign API中提取了一个pdf,它给了我一个文件的字节.
我正在尝试将这些字节保存到boto s3支持的FileField中.我运气不好. 这是我得到的最接近的,但它在保存’发言人’时出错,而写入S3的pdf似乎已损坏. 这里扬声器是我的模型的一个实例,fileData是从echosign api返回的’bytes’字符串 afile = speaker.the_file = S3BotoStorageFile(filename,"wb",S3BotoStorage()) afile.write(fileData) afile.close() speaker.save() 解决方法
我离我更近了!
content = ContentFile(fileData) speaker.profile_file.save(filename,content) speaker.save() 事实证明FileField已经是S3BotoStorage了,您可以通过传递原始数据来创建一个新文件.我不知道的是如何使它成为二进制(我假设它不是).尽管其中包含大量数据,但我的文件仍然存在损坏. 这里是echosign的回应: 我基本上抓住字节并将其作为fileData传递给ContentFile.也许我需要base64解码.去试试吧! 更新 那很有效! 在我弄清楚答案之前,我似乎必须在这里提出这个问题.叹.所以最终的代码看起来像这样: content = ContentFile(base64.b64decode(fileData)) speaker.profile_file.save(filename,content) speaker.save() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |