CURL cli PUT请求-发送数据和文件

CURL cli PUT请求-发送数据和文件,curl,command-line-interface,put,Curl,Command Line Interface,Put,我正在研究API的PUT方法,它将更新URL中由ID定义的实体。我需要发送文件和一些用于用户身份验证的附加数据(如签名和用户公钥)。我找到了如何发送文件: curl -v -X PUT -T "file.epub" localhost:8080/api/book/?id=123 并了解如何发送数据 curl -v -X PUT --data test=abc localhost:8080/api/book/?id=123 但如何发送文件和其他数据字段 就像: curl -X PUT -F f

我正在研究API的PUT方法,它将更新URL中由ID定义的实体。我需要发送文件和一些用于用户身份验证的附加数据(如签名和用户公钥)。我找到了如何发送文件:

curl -v -X PUT -T "file.epub" localhost:8080/api/book/?id=123
并了解如何发送数据

curl -v -X PUT --data test=abc localhost:8080/api/book/?id=123
但如何发送文件和其他数据字段

就像:

curl -X PUT -F file=@file.epub -F test=abc localhost:8080/api/book/?id=123
我假设您可以更改API,这样您就可以使用参数上传文件,在本例中,该参数称为
file

curl -d "key1=value1" -d "key2=value2" -d @"/path/to/file" -X PUT your_url

PUT不能与“-F”(例如curl-X PUT-F file=@file.epub-F test=abc localhost:8080/api/book/?id=123)一起使用,因为“-F”表示内容类型“多部分/表单数据”头(-H“内容类型:多部分/表单数据”),它不能与PUT请求一起使用。

感谢您的快速响应。我不太明白您所说的“您可以使用参数上传文件,在本例中,该参数称为file”是什么意思。我将无法从用户计算机启动文件上载。你能详细解释一下吗?谢谢。参数
文件
将是
文件.epub
的原始内容。我尝试了这个PUT请求。当我处理PHP脚本中随请求而来的数据时,我得到了奇怪的值。首先,我收到18个参数,而我只通过2个。参数的名称,例如:----------------------------e2ece971afa8\r\n内容配置:\u form-data_名称而且没有“测试”参数。在使用request curl-v-X PUT--data test=abc localhost:8080/api/book/?id=123的同时,我可以使用正确的名称和值检索参数。对于PUT请求,我们似乎以错误的方式发送文件。