我从echosign API中取回了一个pdf,它给了我一个文件的字节。
我正在尝试将这些字节保存到boto s3支持的FileField中。我没有太多运气。
这是我得到的最接近的,但是在保存“发言人”时出错,而写入S3的pdf似乎已损坏。
这里speaker
是我的模型的一个实例,fileData是从echosign api返回的'bytes'字符串
afile = speaker.the_file = S3BotoStorageFile(filename, "wb", S3BotoStorage())
afile.write(fileData)
afile.close()
speaker.save()
答案 0 :(得分:8)
我离我更近了!
content = ContentFile(fileData)
speaker.profile_file.save(filename, content)
speaker.save()
原来FileField已经是S3BotoStorage,您可以通过传递原始数据来创建一个新文件。我不知道的是如何使它成为二进制(我假设它不是)。尽管我的文件中包含大量数据,但我的文件仍然存在损坏。
以下是echosign的回应: https://secure.echosign.com/static/apiv14/sampleXml/getDocuments-response.xml
我基本上抓取字节并将其作为ContentFile
传递给fileData
。也许我需要base64解码。试试吧!
那很有用!
在我找出答案之前,似乎我必须先问这个问题。叹。所以最终的代码看起来像这样:
content = ContentFile(base64.b64decode(fileData))
speaker.profile_file.save(filename, content)
speaker.save()