2016-07-28 74 views
0

我試圖使用他們的API將文件上傳到Google Drive。用文本加入文件二進制文件以創建POST請求正文 - python

根據自己的規格,在POST請求的主體應該是這樣的:

--foo_bar_baz 
Content-Type: application/json; charset=UTF-8 

{ 
    "name": "My File" 
} 

--foo_bar_baz 
Content-Type: image/jpeg 

JPEG data 
--foo_bar_baz-- 

假設我有到JPEG文件的路徑,如何構建請求體(「加載文件加上前綴並將文本追加到它「)?

謝謝。

PS:請不要建議Google客戶端庫。這是關於創建請求的身體:)

+1

對不起,我不明白你爲什麼不想使用實際的客戶端庫。 –

+0

@DanielRoseman不同的故事:)也許是因爲它應該在其他地方工作。問題是如何構建請求。這應該是值得了解的:) GDrive只是爲了上下文。 – user2781994

回答

0

Advanced Usage討論,

請求支持流上傳,它允許你發送大量流或文件,而無需讀取它們到內存中。要流並上傳,只是爲你的身體提供一個類似文件的對象:

with open('massive-body', 'rb') as f: 
    requests.post('http://some.url/streamed', data=f) 

但是,請注意,強烈建議以二進制方式打開文件。這是因爲請求可能會嘗試爲您提供Content-Length標頭,如果是,則此值將設置爲文件中的字節數。 如果以文本模式打開文件,可能會出現錯誤。

這個Quickstart也會有幫助。