如何通过curl从multipart POST请求响应中同时获取响应头并下载文件
问题原因
当你使用curl -i时,curl会将HTTP响应头和响应体(图片数据)混合输出到标准输出。此时搭配-o responseImage.png,所有输出(包括响应头)都会被写入图片文件,导致图片文件开头混入了HTTP头内容,自然无法被图片查看器识别;同时因为标准输出被重定向到文件,终端也就看不到响应头了。
解决方案
有两种常用方式实现「查看响应头+下载正常图片」的需求:
方式1:将响应头保存到单独文件,终端显示传输进度
使用-D参数指定响应头的保存文件,-o保存图片:
curl -X POST -F "image=@11.jpeg" http://localhost:8080/ -o responseImage.png -D response_headers.txt
执行后:
responseImage.png是纯净的图片文件,可正常打开response_headers.txt中存储完整的HTTP响应头- 终端会显示传输进度表
方式2:终端直接显示响应头,图片保存到文件
如果想在终端直接看到响应头,无需额外保存文件,可将-D的输出目标设为标准输出(用-表示):
curl -X POST -F "image=@11.jpeg" http://localhost:8080/ -o responseImage.png -D -
执行后:
- 终端会直接打印HTTP响应头
responseImage.png是正常的图片文件- 终端同时会显示传输进度信息
内容的提问来源于stack exchange,提问作者kallis
相关产品推荐
相关产品推荐

