2017-02-16 157 views
0

我有這個cURL請求,我想轉換成Python請求代碼。無法上傳文件到REST API

捲曲含量是

curl -H "X-PrettyPrint: 1" 
    -F 'json={"title":"PandaTest"};type=application/json' 
    -F "[email protected];type=application/octet-stream" 
    -X POST https://cs31.salesforce.com/services/data/v39.0/connect/files/users/me 
    -H 'Authorization: 00Dp000000.....CqqU0.S_5r' --insecure 

對於請求的更多細節檢查SalesForce公司文檔包含的HTTP請求消息 - here。搜索部分Upload a file to the Files home

什麼我寫的這

Python的計數器部分是

import requests 

files = { 
      "fileData" : open("rename.py", "rb"), 
      "json" : '{"title":"PandaTest"}' 
     } 

headers = { 
       'Authorization': 'OAuth 00Dp00000000u....n3ZGuoZK2wYJRCqqU0.S_5r', 
       "Content-Disposition": "form-data 'fileData'" 
      } 

r = requests.post('https://cs31.salesforce.com/services/data/v39.0/connect/files/users/me/', 
        data=files, headers=headers) 
data = json.loads(r.text) 

print data 

我的請求發送成功,但我得到一個錯誤Missing expected "fileData" binary parameter。我有一種感覺,我正在嘗試發送請求不形成正確。我究竟在哪裏出了問題?

我有一種感覺,我沒有正確處理cURL請求中的2 -F

+0

是fileData應該是文件的實際數據還是文件的名稱? – MattCorr

回答

0

這條線:

"fileData" : open("rename.py", "rb"), 

的「文件名」設置爲當您打開一個文件時,返回的對象。如果你想「文件名」是文件的實際內容,那麼該行改成這樣:

"fileData" : open("rename.py", "rb").read(), 

將讀取所有字節的文件和「文件名」設置爲他們。

+0

我甚至嘗試過。但是這並沒有幫助。 – JRodDynamite

相關問題