簡體   English   中英

Python請求:使用Multipart / form-data在Facebook上發布圖像

[英]Python Request: Post Images on Facebook using Multipart/form-data

我正在使用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請求:在單個請求中發布JSON和文件 )可能無法同時發送數據和多部分編碼文件中的文件,所以我更新了代碼:

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尤其可能包含必須正確轉義的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM