我需要通过命令行使用cURL进行POST请求。该请求的数据位于一个文件中。我知道通过--upload-file
选项可以使用PUT方法完成这个操作。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
我需要通过命令行使用cURL进行POST请求。该请求的数据位于一个文件中。我知道通过--upload-file
选项可以使用PUT方法完成这个操作。
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
明确指出这是一个 POST 请求。这两个选项可以安全地省略,而不会改变网络传输的行为。文件的路径需要在前面加上一个 @
符号,这样 curl
就知道要从文件中读取。@
部分非常重要! - Ron Klein-d
选项将导致 curl
删除换行符,但 --data-binary
不会。 - Asclepius--data-binary "@file"
。 - Cale Sweeney我需要通过命令行使用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
, ...
--data "name@stuff"
。 - Hermanncurl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
我在传递文件参数时遇到了类似的问题。使用-F选项可以将文件作为表单数据进行传递,但文件的内容类型为application/octet-stream。我的端点预期的是text/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
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'