cURL命令上传文件不上传文件

时间:2019-05-16 21:16:44

标签: java spring-boot curl file-upload

所以我有一个Java API,我使用cURL命令将GET / POST请求发送到我的API。我在Java API中使用Springboot。我的cURL命令如下所示:

curl -X POST \
  https://localhost:8443/abc/code/v \
  -H 'Content-Type: multipart/form-data' \
  -F file=@/path/to/file.txt

和接收此请求的Java Springboot方法如下:

@RequestMapping(method = RequestMethod.POST, value = "/{code}/{v}")
    public ResponseEntity<Object> uploadTemplate( //
            @ApiParam(value = "code desc") //
            @PathVariable final String code, //
            @ApiParam(value = "v desc") //
            @PathVariable final String v, //
            @RequestParam("file") MultipartFile file
    ) throws IOException {
        //log.info("received [url: /tabc/" + code + "/" + v + ", method: POST");
        System.out.println("file: "+ file.getName());
}

会打印出"file: file"

看起来file.txt根本没有上传到服务器!我究竟做错了什么?我查过Google,但看起来我几乎在做所有事情。

1 个答案:

答案 0 :(得分:1)

MultipartFile.getName以多部分形式返回参数名称。

要获取MultipartFile的字节,请使用file.getBytes()

如果MultipartFile是一个文本文件,则可以使用此实用程序方法来检索该文本文件中的行的列表:

    public List<String> read(MultipartFile file) throws IOException {
        InputStreamReader in = new InputStreamReader(file.getInputStream());
        try (BufferedReader reader = new BufferedReader(in)) {
            return reader.lines().collect(Collectors.toList());
        }
    }