Python请求:使用多部分/表单数据在Facebook上发布图像

Python请求:使用多部分/表单数据在Facebook上发布图像,python,facebook,python-requests,multipartform-data,Python,Facebook,Python Requests,Multipartform Data,我正在使用facebook API在页面上发布图像,我可以使用以下方法从web发布图像: import requests data = 'url=' + url + '&caption=' + caption + '&access_token=' + token status = requests.post('https://graph.facebook.com/v2.7/PAGE_ID/photos', data=data) pr

我正在使用facebook API在页面上发布图像,我可以使用以下方法从web发布图像:

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
但是当我想发布一个本地图像(使用多部分/表单数据)时,我得到一个错误:
ValueError: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)
print status
我读到()可能无法在多部分编码的文件中同时发送数据和文件,因此我更新了代码:

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
但这似乎不起作用,我得到了与上面相同的错误。

你们知道它为什么不起作用吗?也许有办法解决这个问题。

数据作为字典传递:

请求
无法从
应用程序/x-www-form-urlencoded
编码字符串生成
多部分/表单数据
部分(以及您正在上载的文件)


为POST数据使用字典还有一个额外的优点,
请求
会正确编码值<代码>标题
尤其可能包含您必须正确转义的数据。

内容处置头在发送此类json数据字典时使用哪个“名称”?我在任何地方都找不到这个,但我真的很想在我的C#程序中使用它。目前我一直在为我的MultipartFormDataContent添加多个StringContent位。嗨,如何使用相同的方法上传多张照片。我试着把两个项目放到文件里。它仍然上载一张照片。@ascii\u walker:page photos API不支持在一个请求中上载多张照片。请参阅:您可以在一个API请求中上载和发布一张照片。在使用此API请求时,文件dict是否可以包含多个图像,然后这些图像可以在facebook上的一篇帖子中一起发布?不,它不能。见我之前的评论。
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)