How Can I Post Files and JSON Data Together With Curl?

前端 未结 4 1180
别那么骄傲
别那么骄傲 2021-02-19 03:30

I\'ve been posting a file with this curl command:

curl -i -F file=@./File.xlsm -F name=file -X POST http://example.com/new_file/

Now I want to

相关标签:
4条回答
  • 2021-02-19 03:33

    From @nbrooks comment, adding an additional header HTTP header works fine as shown below by using several -H or --header flags to your curl command:

    
    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/
    

    comment and current can be combined into "metadata" in the request.headers processing part on the flask web server.

    0 讨论(0)
  • 2021-02-19 03:40

    I've had success developing similar endpoints that accept multiple files along with their metadata in JSON format.

    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/
    

    Notice the addition of ;type=application/json at the end of the metadata request part. When uploading multiple files of different types, you can define the mime type at the end of the -F value.

    I have confirmed that this works for Spring MVC 4.3.7 using @RequestPart. The key in that instance is to not provide the consumes value on the @RequestMapping annotation.

    0 讨论(0)
  • 2021-02-19 03:48

    You could just add another form field:

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

    Note: due to the content type, this does not really equate to sending json to the web service.

    0 讨论(0)
  • 2021-02-19 03:54

    This worked for me:

    curl -v -H "Content-Type:multipart/form-data" -F "meta-data=@C:\Users\saurabh.sharma\Desktop\test.json;type=application/json" -F "file-data=@C:\Users\saurabh.sharma\Pictures\Saved Pictures\windows_70-wallpaper.jpg" http://localhost:7002/test/upload

    test.json has the json data I want to send.

    0 讨论(0)
提交回复
热议问题