用于调用具有基本身份验证和多部分文件上传的 POST 请求的 curl 命令

Curl command for invoking a POST request with basic authentication and multipart file upload

我正在使用 curl 命令调用以下服务:

@RequestMapping(value = "/api/uploadFile", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<String>> uploadFile(@RequestParam("file") MultipartFile multipartFile, @RequestHeader("Authorization") String authCredentials) {...}

它使用基本身份验证,需要将文件上传为多部分文件。

如何使用 curl 命令调用它?

我正在尝试此操作,但收到一条错误消息,指出非法 base64 字符:

curl -i -H 'Authorization:Basic username:password' -H 'Accept:application/json'    -F 'file=@./application.properties' http://hostname/api/uploadFile/

错误:

java.lang.IllegalArgumentException: Illegal base64 character 3a
        at java.util.Base64$Decoder.decode0(Base64.java:714) ~[na:1.8.0_121]
        at java.util.Base64$Decoder.decode(Base64.java:526) ~[na:1.8.0_121]
        at java.util.Base64$Decoder.decode(Base64.java:549) ~[na:1.8.0_121]

Authorization:header错了

让 curl 将用户名和密码转换为 HTTP 身份验证 header 而不是 -u:

curl -i -u 'username:password' -H 'Accept:application/json' -F 'file=@./application.properties' http://hostname/api/uploadFile/