Curl-从文件发送多部分formdata json
我需要通过命令行发送带有curl的Curl-从文件发送多部分formdata json,curl,Curl,我需要通过命令行发送带有curl的POST请求。ContentType需要是multipart/form data 我的有效负载是JSON,但它非常大,所以我不能通过curl直接发送它(参数列表太长)。相反,我需要通过文件要求内容 如果不从文件中获取内容,一切正常 curl "https://domain/endpoint.php" \ -F "jsondata={\"jsonkey\":\"jsonvalue\"};typ
POST
请求。ContentType需要是multipart/form data
我的有效负载是JSON,但它非常大,所以我不能通过curl直接发送它(参数列表太长)。相反,我需要通过文件要求内容
如果不从文件中获取内容,一切正常
curl "https://domain/endpoint.php" \
-F "jsondata={\"jsonkey\":\"jsonvalue\"};type=application/json"
=>
(作为多部分/表单数据发送)
但是当我将相同的(小测试)json放在一个文件中并在curl命令中使用它时。服务器端的结果是不同的
curl "https://domain/endpoint.php" \
-F "jsondata=@curl_data3.json;type=application/json"
=>
文件(curl_data3.json)只包含{“jsonkey”:“jsonvalue”}
似乎我只是发送文件本身,而不是文件的内容:-/HTML表单,多部分/表单数据是为其设计的,它支持多种类型的输入字段,特别是区分“文件上载”的输入字段与其他字段。作为文件的字段包含有关该文件的元数据。请参阅参考RFC7578,尤其是: 对于表示文件内容的[多部分/表单数据的一部分],为 还应使用的“filename”参数提供文件 内容处置标头字段。文件名不是必需的
curl-F field=@file
按照标准实现了这一点,显然您的服务器将其扩展为您得到的json结构
如果使用而不是curl-F字段=
curl "https://domain/endpoint.php" \
-F "jsondata=@curl_data3.json;type=application/json"
array(1) {
["jsondata"]=>
array(5) {
["name"]=>
string(15) "curl_data3.json"
["type"]=>
string(16) "application/json"
["tmp_name"]=>
string(14) "/tmp/php5k58m4"
["error"]=>
int(0)
["size"]=>
int(23)
}
}