如何将文件和 JSON 数据与卷曲一起发布



我一直在用这个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注释上提供消耗值。

您可以添加另一个表单字段:

curl -X POST http://someurl/someresource -F upload=@/path/to/some/file -F data="{"test":"test"}"

注意:由于内容类型的原因,这并不真正等同于将 json 发送到 Web 服务。

这对我有用:

curl -v -H "Content-Type:multipart/form-data" -F "meta-data=@C:Userssaurabh.sharmaDesktoptest.json;type=application/json" -F "file-data=@C:Userssaurabh.sharmaPicturesSaved Pictureswindows_70-wallpaper.jpg" http://localhost:7002/test/upload

test.json 有我想发送的 json 数据。

@nbrooks注释中,添加一个额外的标头 HTTP 标头工作正常,如下所示,通过在 curl 命令中使用多个-H or --header标志:


curl -H "comment: Submitting a new data set." -H  "current: false" -H "sheet: 1" -H "row: 7" -F file=@./File.xlsm -F name=file http://example.com/new_file/

commentcurrent可以合并到"元数据"request.headers烧瓶网络服务器上的处理部分。

相关内容

  • 没有找到相关文章

最新更新