2013-08-02 44 views
2

我正在處理API的PUT方法,該方法將更新URL中由ID定義的實體。我需要發送文件和一些額外的數據用於用戶認證(如簽名和用戶公鑰)。我發現那位如何我可以發送文件:CURL cli PUT請求 - 發送數據和文件

curl -v -X PUT -T "file.epub" localhost:8080/api/book/?id=123 

,並找出如何我可以發送數據

curl -v -X PUT --data test=abc localhost:8080/api/book/?id=123 

但我怎麼能發送文件和其它數據字段?

回答

2

就像:

curl -X PUT -F [email protected] -F test=abc localhost:8080/api/book/?id=123 

我假設你可以改變你的API,這樣你就可以上傳使用參數的文件,在這個例子中,參數被稱爲file

+0

感謝您的快速響應。我不明白你的意思是「你可以使用參數上傳文件,在這個例子中這個參數叫做文件」。我將無法啓動用戶計算機上的文件上傳。你能詳細解釋一下嗎?謝謝。 – Tamara

+0

那麼,參數'file'將是'file.epub'的原始內容。 –

+2

我試過這個PUT請求。當我在PHP腳本中處理數據請求時,我得到了奇怪的值。首先我收到18個參數,而我只傳遞2個參數的名稱,例如:------------------------------ e2ece971afa8 \ r \ nContent處置:_form數據; _name。並沒有「測試」參數。同時請求curl -v -X PUT --data test = abc localhost:8080/api/book /?id = 123我可以用正確的名稱和正確的值檢索參數。看起來我們以錯誤的方式向PUT請求發送文件。 – Tamara

0
curl -d "key1=value1" -d "key2=value2" -d @"/path/to/file" -X PUT your_url 

PUT將不與 「-F」 工作(例如捲曲-X PUT -F [email protected] -F測試= ABC本地主機:8080/API /書/ ID = 123)爲「 -F「意味着內容類型」multipart/form-data「頭(-H」Content-Type:multipart/form-data「),它不適用於PUT請求。