我需要通过cURL从命令行发出POST请求。此请求的数据位于一个文件中。我知道通过PUT,这可以通过——upload-file选项来完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
我需要通过cURL从命令行发出POST请求。此请求的数据位于一个文件中。我知道通过PUT,这可以通过——upload-file选项来完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
当前回答
大多数答案在这里是完美的,但当我为我的特定问题登陆这里时,我必须使用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
其他回答
你正在寻找——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就知道要从文件中读取。
大多数答案在这里是完美的,但当我为我的特定问题登陆这里时,我必须使用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
我有一个类似的问题,在传递文件作为参数。使用-F允许文件作为表单数据传递,但文件的内容类型是应用程序/八字节流。我的端点期望文本/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
我不得不使用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'
如果您使用表单数据上传文件,其中必须指定参数名称,您可以使用:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx . xml