python – 通过django存储boto s3将二进制数据保存到模型上的文件中

python – 通过django存储boto s3将二进制数据保存到模型上的文件中,第1张

概述我从echosign API中提取了一个pdf,它给了我一个文件的字节. 我正在尝试将这些字节保存到boto s3支持的FileField中.我运气不好. 这是我得到的最接近的,但它在保存’发言人’时出错,而写入S3的pdf似乎已损坏. 这里扬声器是我的模型的一个实例,fileData是从echosign api返回的’bytes’字符串 afile = speaker.the_file = S3 我从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的回应:
https://secure.echosign.com/static/apiv14/sampleXml/getDocuments-response.xml

我基本上抓住字节并将其作为fileData传递给Contentfile.也许我需要base64解码.去试试吧!

更新

那很有效!

在我弄清楚答案之前,我似乎必须在这里提出这个问题.叹.所以最终的代码看起来像这样:

content = Contentfile(base64.b64decode(fileData))speaker.profile_file.save(filename,content)speaker.save()
总结

以上是内存溢出为你收集整理的python – 通过django存储boto s3将二进制数据保存到模型上的文件中全部内容,希望文章能够帮你解决python – 通过django存储boto s3将二进制数据保存到模型上的文件中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存