【问题标题】:Some problem Logic with response POST in spring bootspring boot中响应POST的一些问题逻辑
【发布时间】:2022-01-21 03:22:45
【问题描述】:

我将不得不做一些开发,我需要你的逻辑, 我会尽量说清楚

我有一个 JSON 文件,它将被发送到 Web 服务来处理它。

当文件到达这个 Web Service 时,我必须对其进行解析。

第一个问题: 恢复这个文件是 @PostMapping 吗?

因为它是一个文件,所以我把它作为一个这样的文件来获取:

@PostMapping( value="/getFile",
consumes = {"multipart/form-data"})
public void postFile(@RequestParam() MultipartFile file) throws IOException   

我很好地恢复了文件,但问题是 @RequestParam 参数需要一个文件名,除了文件发送到 Web 服务时,我还不知道它的名称,

第二个问题

那么如何将这个文件解析成字符串呢?

提前感谢您的宝贵帮助

【问题讨论】:

标签: java spring-boot request


【解决方案1】:

第一个问题:

是的,@PostMapping 是正确的方法。关于文件名位,@RequestParam() 不期望传递文件名,它期望键值对的“键”,其中值是正在上传的文件。 例如,当通过 RestTemplate 调用发送文件时,该文件将包含在 POST 调用中,有点像这样:

MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("uploadFile", getFileToUpload());

这里的关键是“uploadFile”,所以你的控制器看起来像这样:

@PostMapping( value="/getFile",
consumes = {"multipart/form-data"})
public void postFile(@RequestParam("uploadFile") MultipartFile file) throws IOException 

查看本教程:https://spring.io/guides/gs/uploading-files/


第二个问题:

ByteArrayInputStream stream = new ByteArrayInputStream(file.getBytes());
String myFileString = IOUtils.toString(stream, StandardCharsets.UTF_8);

这应该可以。干杯

【讨论】:

  • 好的,我希望这是文件的名称!但它是之前发送网络服务的关键!而已 ?非常感谢
猜你喜欢
  • 1970-01-01
  • 2019-04-02
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多