将文件编码为base64并发送到API

时间:2017-06-20 12:20:04

标签: python json api

我目前在向API发送文件时遇到问题。我通过打印到屏幕手动测试我的脚本base64输出,并将其直接复制并粘贴到API的沙盒中,该沙盒正常工作但是当我将它打包成JSON准备发送时,它不再有效。

我需要的是发送到API:

{
  "content": "mybase64encodedfilestuff"
}

我的python代码是:

with open(filename, "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())
encoded_string = encoded_string.decode("utf-8")
payload = {}
payload['content'] = encoded_string
json_payload = json.dumps(payload)

然后我将其发送到API:

r =  requests.post(url='https://api.example.com/uploads', data=payload,
                   headers={'Content-Type': 'application/json',
                            'Authorization': 'Basic '+api_string}, timeout=5)

我觉得我错过了一些简单但却无法解决的问题,因为我收到错误400,请先提供有效内容。如果我使有效负载复制并粘贴打印输出,则可以正常工作。

1 个答案:

答案 0 :(得分:0)

我将我的字符串转换为JSON,但他们使用的是原始字符串,而不是JSONified字符串。