使用Spring在RequestBody上的CSV

时间:2019-03-20 02:49:24

标签: java spring csv spring-boot spring-web

我需要在请求中接收一个csv文件并对其进行处理。

@PostMapping(value = "/csv", consumes = "text/csv")
  public ViewObject postCsv(@RequestBody InputStream request){
// do stuff
}

但是当我执行时:

curl -X POST -H 'Content-Type: text/csv' -d @input.csv http://localhost:8080/csv

这是我的控制台上显示的内容:

Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/csv;charset=UTF-8' not supported]

春天说我的要求无效。

因此,问题是:如何正确接收此csv?

1 个答案:

答案 0 :(得分:1)

正如评论中提到的那样,一种方法是实现自己的HttpMessageConverter-在网络上有质量可变的示例。

如果您已经有一些使用Spring的org.springframework.core.io.Resource类来解析CSV的代码,另一种选择是如下更改方法签名以使用Spring的内置ResourceHttpMessageConverter

@PostMapping(path = "/csv", consumes = "application/octet-stream")
    public ViewObject postCsv(@RequestBody Resource resource){
    // do stuff
}