我正在使用 facebook API 在页面上发布图像,我可以使用以下命令从网络发布图像:
import requests
data = 'url=' + url + '&caption=' + caption + '&access_token=' + token
status = requests.post('https://graph.facebook.com/v2.7/PAGE_ID/photos',
data=data)
print status
但是当我想发布本地镜像(使用 multipart/form-data)时,我收到错误:ValueError:数据不能是字符串。
我正在使用这段代码:
data = 'caption=' + caption + '&access_token=' + token
files = {
'file': open(IMG_PATH, 'rb')
}
status = requests.post('https://graph.facebook.com/v2.7/PAGE_ID/photos',
data=data, files=files)
print status
我读到( Python Requests: Post JSON and file in single request ),也许无法在多部分编码文件中发送数据和文件,因此我更新了我的代码:
data = 'caption=' + caption + '&access_token=' + token
files = {
'data': data,
'file': open(IMG_PATH, 'rb')
}
status = requests.post('https://graph.facebook.com/v2.7/PAGE_ID/photos',
files=files)
print status
但这似乎不起作用,我得到了与上面相同的错误。
你们知道为什么它不起作用吗?也许有办法解决这个问题。
最佳答案
将data
作为字典传入:
data = {
'caption', caption,
'access_token', token
}
files = {
'file': open(IMG_PATH, 'rb')
}
status = requests.post(
'https://graph.facebook.com/v2.7/PAGE_ID/photos',
data=data, files=files)
requests
无法从 application/x-www-form- 生成
编码字符串。multipart/form-data
部分(以及您正在上传的文件) urlencoded
对 POST 数据使用字典还有一个额外的优点,即 requests
负责对值进行正确编码; caption
尤其可能包含您必须正确转义的数据。
关于Python请求: Post Images on Facebook using Multipart/form-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633791/