[英]Send request to cURL with post data sourced from a file
我需要從命令行通過 cURL 發出 POST 請求。 此請求的數據位於文件中。 我知道通過 PUT 可以使用--upload-file
選項來完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
您正在尋找--data-binary
參數:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
在上面的示例中, -i
打印出所有標題,以便您可以看到發生了什么,並且-X POST
明確表明這是一個帖子。 這兩個都可以安全地省略而不改變電線上的行為。 文件的路徑需要以@
符號開頭,因此curl
知道從文件中讀取。
我需要從命令行通過 Curl 發出 POST 請求。 此請求的數據位於文件中...
您需要做的就是讓--data
參數以@
開頭:
curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file-path
例如,如果您在名為stuff.xml
的文件中有數據,那么您將執行以下操作:
curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path
stuff.xml
文件名可以替換為文件的相對路徑或完整路徑: @../xml/stuff.xml
、 @/var/tmp/stuff.xml
、...
如果您使用表單數據上傳文件,其中必須指定參數名稱,您可以使用:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
大多數答案在這里都是完美的,但是當我為我的特定問題登陸這里時,我必須使用 POST 方法上傳二進制文件(XLSX 電子表格),我發現缺少一件事,即通常它不僅僅是你加載的文件,你可能有更多表單數據元素,例如對文件的評論或對文件的標簽等,就像我的情況一樣。 因此,我想在這里添加它,因為它是我的用例,以便它可以幫助其他人。
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
我不得不使用 HTTP 連接,因為在 HTTPS 上有默認文件大小限制。
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'
我在將文件作為參數傳遞時遇到了類似的問題。 使用 -F 允許文件作為表單數據傳遞,但文件的內容類型是 application/octet-stream。 我的端點期待文本/csv。
您可以使用以下語法設置文件的 MIME 類型:
-F 'file=@path/to/file;type=<MIME_TYPE>
因此,對於 CSV 文件,完整的 cURL 命令將如下所示:
curl -X POST -F 'file=@path/to/file.csv;type=text/csv' https://test.com
這里有關於這個和其他選項的很好的文檔: https ://catonmat.net/cookbooks/curl/make-post-request#post-form-data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.