簡體   English   中英

使用來自文件的發布數據向 cURL 發送請求

[英]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 上有默認文件大小限制。

https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM