myfreax

Curl POST JSON并上传文件

curl是用于在本地计算机与远程服务器之间传输数据的命令行工具

2 min read
By myfreax
Curl POST JSON并上传文件
Curl POST JSON并上传文件

curl是用于在本地计算机与远程服务器之间传输数据的命令行工具。使用curl时您可以使用HTTP,HTTPS,SCP SFTPFTP等协议下载或上传数据。

Curl提供了许多选项,使您可以恢复上传/下载,限制带宽,代理支持,用户身份验证等。

Curl命令已预安装在大多数Linux发行版。要检查你的Linux发行版是否已安装Curl,请按快捷键CTRL+ALT+T打开终端,键入curl,然后按Enter。

安装 Curl

如果已安装curl,则系统将打印curl: try 'curl --help' or 'curl --manual' for more information

否则终端打印消息curl command not found curl命令未找到。如果你尚未安装Curl,则可以使用发行版的软件包管理器安装curl

如果你的计算机运行的是基于Debian的Linux发行版,例如Ubuntu,Linux Mint等。请运行sudo apt install curl命令安装curl。

如果你的计算机运行的是基于Redhat的Linux发行版,例如CentOS,Fedora等。请运行sudo yum install curl命令安装Curl。

sudo yum install curl
sudo apt install curl

POST JSON并上传文件

在发送JSON数据并上传文件到服务器时,需要设置 header 的 Content-Type 为 multipart/mixed,指示 Curl 命令以混合的格式发送数据。

除了设置 header 的 Content-Type 之外,发送 JSON 格式数据是以 Curl 命令的 -F 选项指定要发送的 JSON 字符串,注意 JSON 需要使用单引号转义。

因此命令最终形式是 curl -X POST -H "Content-Type: multipart/mixed" -F blob=@文件路径 -F 'metadata=JSON 字符串;type=application/json' 。

curl -X POST -H "Content-Type: multipart/mixed" -F "blob=@/Users/username/Documents/bio.jpg" -F "metadata={\"edipi\":123456789};type=application/json" http://localhost:8080/api/v1/user/

仅上传文件

要使用 Curl 命令上传文件,只需要仅使用 Curl 命令的 -F 选项以键值对的形式name=content指定multipart MIME 数据。

但在使用 -F 选项指定文件时,需要在文件路径之前添加@符号。文件可以是任何类型文件包括图像,文档等。

例如参数 -F 'image=@/home/user/Pictures/wallpaper.jpg' 指定Key是 image ,文件是 /home/user/Pictures/wallpaper.jpg。

curl -X POST -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload