【问题标题】:Python Request: Post Images on Facebook using Multipart/form-dataPython 请求:使用 Multipart/form-data 在 Facebook 上发布图片
【发布时间】:2016-07-28 10:30:31
【问题描述】:

我正在使用 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 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

但这似乎不起作用,我得到与上述相同的错误。
你们知道为什么它不起作用吗,也许有办法解决这个问题。

【问题讨论】:

    标签: python facebook python-requests multipartform-data


    【解决方案1】:

    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 尤其可能包含您必须正确转义的数据。

    【讨论】:

    • content-disposition 标头使用哪个“名称”来发送这样的 json 数据字典?我在任何地方都找不到它,但真的很想在我的 C# 程序中使用它。目前我被困在我的 MultipartFormDataContent 中添加多个 StringContent 位。
    • 嗨,如何使用相同的方法上传多张照片。我尝试将两个项目放入文件 dict 中。它仍然上传一张照片。
    • @ascii_walker:页面照片 API 不支持在单个请求中上传多张照片。请参阅documentation您可以在一个 API 请求中上传和发布单张照片。
    • 在使用这个时,文件 dict 是否可以包含多个图像,然后可以在 facebook 上的一个帖子中一起发布?
    • 不,它不能。请参阅我之前的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多