Python 请求:Post Facebook 上的图片使用 Multipart/form-data
Python Request: Post Images on Facebook using Multipart/form-data
我正在使用 facebook API 到页面上的 post 图片,我可以 post 使用这个来自网络的图片 :
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
但是当我想要 post 本地图像(使用 multipart/form-data)时,我收到错误消息:ValueError: Data must not be a string.
我正在使用此代码:
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-urlencoded
编码字符串生成 multipart/form-data
部分(连同您上传的文件)。
对 POST 数据使用字典还有一个额外的好处,即 requests
负责对值进行正确编码; caption
特别是可能包含您必须正确转义的数据。
我正在使用 facebook API 到页面上的 post 图片,我可以 post 使用这个来自网络的图片 :
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
但是当我想要 post 本地图像(使用 multipart/form-data)时,我收到错误消息:ValueError: Data must not be a string.
我正在使用此代码:
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-urlencoded
编码字符串生成 multipart/form-data
部分(连同您上传的文件)。
对 POST 数据使用字典还有一个额外的好处,即 requests
负责对值进行正确编码; caption
特别是可能包含您必须正确转义的数据。