gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:37:52 25 4
gpt4 key购买 nike

我正在从 echosign API 中提取一个 pdf,它提供了一个文件的字节数。

我正在尝试获取这些字节并将它们保存到 boto s3 支持的 FileField 中。我运气不太好。

这是我得到的最接近的,但它在保存“扬声器”时出错,而且 pdf 虽然写入 S3,但似乎已损坏。

这里 speaker 是我的模型的一个实例,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 storages boto s3将二进制数据保存到模型上的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12024465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com