2013-08-02 47 views
2

我正在处理API的PUT方法,该方法将更新URL中由ID定义的实体。我需要发送文件和一些额外的数据用于用户认证(如签名和用户公钥)。我发现那位如何我可以发送文件:CURL cli PUT请求 - 发送数据和文件

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 

但我怎么能发送文件和其它数据字段?

回答

2

就像:

curl -X PUT -F [email protected] -F test=abc localhost:8080/api/book/?id=123 

我假设你可以改变你的API,这样你就可以上传使用参数的文件,在这个例子中,参数被称为file

+0

感谢您的快速响应。我不明白你的意思是“你可以使用参数上传文件,在这个例子中这个参数叫做文件”。我将无法启动用户计算机上的文件上传。你能详细解释一下吗?谢谢。 – Tamara

+0

那么,参数'file'将是'file.epub'的原始内容。 –

+2

我试过这个PUT请求。当我在PHP脚本中处理数据请求时,我得到了奇怪的值。首先我收到18个参数,而我只传递2个参数的名称,例如:------------------------------ e2ece971afa8 \ r \ nContent处置:_form数据; _name。并没有“测试”参数。同时请求curl -v -X PUT --data test = abc localhost:8080/api/book /?id = 123我可以用正确的名称和正确的值检索参数。看起来我们以错误的方式向PUT请求发送文件。 – Tamara

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

PUT将不与 “-F” 工作(例如卷曲-X PUT -F [email protected] -F测试= ABC本地主机:8080/API /书/ ID = 123)为“ -F“意味着内容类型”multipart/form-data“头(-H”Content-Type:multipart/form-data“),它不适用于PUT请求。