【问题标题】:Saving binary data into file on model via django storages boto s3通过 django storages boto s3 将二进制数据保存到模型上的文件中
【发布时间】:2012-08-15 00:06:19
【问题描述】:

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

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

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

这里speaker 是我的模型的一个实例,fileData 是从 echosign api 返回的“字节”字符串

afile = speaker.the_file = S3BotoStorageFile(filename, "wb", S3BotoStorage())
afile.write(fileData)
afile.close()
speaker.save()

【问题讨论】:

    标签: python django amazon-s3 django-storage


    【解决方案1】:

    我更近了!

        content = ContentFile(fileData)
        speaker.profile_file.save(filename, content)
        speaker.save()
    

    原来 FileField 已经是一个 S3BotoStorage,你可以通过像这样传递原始 datadin 来创建一个新文件。我不知道如何使它成为二进制(我假设它不是)。尽管其中有大量数据,但我的文件不断损坏。

    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()
    

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 2014-09-15
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 2016-02-10
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多