【问题标题】:Download binary files with python用python下载二进制文件
【发布时间】:2020-06-26 11:37:08
【问题描述】:

我正在使用 Odoo 框架进行开发,当我从数据库中获取二进制文件值时,我需要下载它。

有什么模块可以用python来做吗?

    @http.route(['/permissions/print/<int:permission_id>'], type='http', auth="public", website=True)
    def print_docr(self, permission_id=None):
        perm_id = request.env['res.partner.permission'].sudo().browse(permission_id)
        print(perm_id.attachment_doc)

这是文件的输出。

有什么建议吗? 感谢阅读!

【问题讨论】:

  • BytesIO 可能会对您有所帮助。不过我不确定……
  • 您的文件是 PNG 图像,顺便说一句...stackoverflow.com/a/49690539/2836621
  • 感谢回复!有什么方法可以将其转换为原始文件并下载它? @MarkSetchell
  • 我不明白这个问题。如果您知道该文件以ivB0R 开头,那么您一定已经下载了它,在这种情况下,完全按照@g2i 的建议保存它——可能带有.png 扩展名。似乎没有必要再次下载它,也不需要将其转换为任何东西。
  • 查看press-a-button-and-download-a-file查看如何自定义print_docr方法下载attachment_doc

标签: python odoo binaryfiles


【解决方案1】:

我不确定我是否理解您想要的内容,但您似乎正在下载 base64 字符串来表示您的二进制文件。如果是这种情况,您可以先将其转换为字节字符串:

from base64 import b64decode

bytes_string = b64decode(perm_id.attachment_doc)

然后将其写入文件:

with open("filename.bin", 'wb') as f:
    f.write(bytes_string)

【讨论】:

  • 然后可以下载这个文件吗? @g2i
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多