2014-02-22 51 views
6

我已經張貼文件,這個curl命令:如何將文件和JSON數據與Curl一起發佈?

curl -i -F [email protected]/File.xlsm -F name=file -X POST http://example.com/new_file/ 

現在我要與文件一起發送有關文件的一些信息(JSON)。

curl -i -H "Content-Type: application/json" -d '{"metadata": {"comment": "Submitting a new data set.", "current": false }, "sheet": 1, "row": 7 }' -F [email protected]/File.xlsm -F name=file http://example.com/new_file/ 

捲曲即將在這個完全不正確的方法使用非常暴躁,而且在這種情況下,說:「你只能選擇一個HTTP請求!」好,夠公平的,那麼如何將文件附件和這些POST變量放入單個curl HTTP請求中?

+2

聽起來像curl已經告訴過你答案......你的HTTP請求有一個json的內容類型,而不是multipart/form-data - 它不能包含一個文件AFAIK。如果您要發送關於該文件的元數據,那麼應該將其作爲HTTP請求標頭髮送。 – nbrooks

+0

想接受這個答案,但是你不能在評論中這樣做。 –

回答

3

你可以只添加另一個表單字段:

curl -X POST http://someurl/someresource -F [email protected]/path/to/some/file -F data="{\"test\":\"test\"}" 

注:由於內容類型,這並不能真正等同於JSON發送到Web服務。

5

我已經成功開發了類似的端點,它接受多個文件及其JSON格式的元數據。

curl -i -X POST -H "Content-Type: multipart/mixed" -F "[email protected]/Users/username/Documents/bio.jpg" -F "metadata={\"edipi\":123456789,\"firstName\":\"John\",\"lastName\":\"Smith\",\"email\":\"[email protected]\"};type=application/json" http://localhost:8080/api/v1/user/ 

請注意在元數據請求部分末尾添加了;type=application/json。上傳多個不同類型的文件時,可以在-F值的末尾定義MIME類型。

我已經證實,這適用於使用@RequestPart的Spring MVC 4.3.7。該實例中的關鍵是不要在@RequestMapping註釋中提供消耗值。

0

這爲我工作:

curl -v -H "Content-Type:multipart/form-data" -F "[email protected]:\Users\saurabh.sharma\Desktop\test.json;type=application/json" -F "[email protected]:\Users\saurabh.sharma\Pictures\Saved Pictures\windows_70-wallpaper.jpg" http://localhost:7002/test/upload

test.json有我想要發送的JSON數據。

相關問題