我一直用这个curl命令发布一个文件:
curl -i -F file=@./File.xlsm -F name=file -X POST http://example.com/new_file/
现在我想发送一些有关该文件(作为JSON)的信息以及该文件.
curl -i -H "Content-Type: application/json" -d '{"Metadata": {"comment": "Submitting a new data set.","current": false },"sheet": 1,"row": 7 }' -F file=@./File.xlsm -F name=file http://example.com/new_file/
Curl对于以完全不正确的方式使用非常脾气暴躁,在这种情况下,它说“你只能选择一个HTTP请求!”好的,公平的,那么如何将文件附件和那些POST变量放入单个curl HTTP请求中呢?
解决方法
我已经成功开发了类似的端点,它们接受多个文件以及JSON格式的元数据.
curl -i -X POST -H "Content-Type: multipart/mixed" -F "blob=@/Users/username/Documents/bio.jpg" -F "Metadata={\"edipi\":123456789,\"firstName\":\"John\",\"lastName\":\"Smith\",\"email\":\"john.smith@gmail.com\"};type=application/json" http://localhost:8080/api/v1/user/
请注意在元数据请求部分的末尾添加; type = application / json.上载不同类型的多个文件时,可以在-F值的末尾定义mime类型.
我已经确认这适用于使用@RequestPart的Spring MVC 4.3.7.该实例中的关键是不在@RequestMapping注释上提供消耗值.