我将文件发布到url并希望读取curl控制台中的所有标头输出。我应该添加什么参数?
curl -F file=@"c:\Word.docx" http://do.convertapi.com/Word2Pdf > output.pdf
答案 0 :(得分:4)
使用-i
来自cURL手册
-i, --include Include protocol headers in the output (H/F)
另请注意:
-I, --head Show document info only
第一个将显示标题,然后是正文。第二个会发送一个HEAD请求,因此您可以在您的示例中使用,因为您正在发布数据。
修改强>
使用-i
的标头输出回显到stdout,与请求主体相同,因此将响应定向到PDF文件将创建无效的PDF。
所以我建议您使用-v
,这会更吵闹,但是在将stdout指向文件时会在命令行显示标题,因为详细输出会转到stderr。
答案 1 :(得分:2)
在 Unix 和 Unix-like 系统中,以下内容提交请求,将响应标头写入控制台并将响应正文保存到 output.pdf
:
curl -F file=@"c:\Word.docx" http://do.convertapi.com/Word2Pdf \
--output output.pdf --dump-header /dev/fd/1 --silent | tail -n +2
--output output.pdf
选项将结果输出到 output.pdf
。
-o, --output <file>
Write output to <file> instead of stdout.
--dump-header /dev/fd/1
选项将 HTTP 状态行(例如 HTTP/1.1 200 OK
)和响应标头写入标准输出(即控制台)。 --dump-header
选项将标头转储到给定文件。 /dev/fd/1
是 stdout 的 file descriptor,因此写入它的任何内容都会输出到控制台。
-D, --dump-header <filename>
(HTTP FTP) Write the received protocol headers to the specified file.
--silent
选项使得只输出标题,而不输出进度条。
-s, --silent
Silent or quiet mode. Don't show progress meter or error messages. Makes Curl mute. It will still output the data you ask for,
potentially even to the terminal/stdout unless you redirect it.
curl
的结果是 piped 到 tail 命令 tail -n +2
,丢弃第一行内容,即 HTTP 状态行(例如 {{1} })。如果您想要或不介意拥有状态行和标题,则可以省略此 HTTP/1.1 200 OK
管道部分。
tail
-n, --lines=[+]NUM
output the last NUM lines, instead of the last 10; or use
-n +NUM to output starting with line NUM