【问题标题】:Sending FILE data in a POST call在 POST 调用中发送 FILE 数据
【发布时间】:2014-12-18 17:55:22
【问题描述】:

我有以下代码:

email = 'david@gmail.com'
avatar = open('/Users/david/Desktop/a.png').read()
data = {
  'email': email,
  'avatar': avatar
}
body = json.dumps(data)
requests.post(url, headers=headers, data = body)

但是,当我尝试这样做时,我收到以下 json 错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte

如何在这里发送文件数据?

【问题讨论】:

    标签: python json file


    【解决方案1】:

    很可能,因为read() 没有按照您的想法行事:

    >>> f = open('image.png').read()
    >>> f
    '\x89PNG\n'
    

    它可能正在读取到它到达第一“行”的点,即换行符,仅此而已,就像我在上面的测试中所做的那样。

    此外,如果您要将 png 数据添加到 JSON 对象,您可能还需要转换为 base64,否则您将获得更多无效的 UTF8 字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多