java - 在 spring 中将 MultipartFile 数据解析为字符串
问题描述
我正在尝试将 MultipartFile 数据解析为字符串并在 java springboot 中将字符串作为响应返回。任何人都可以为此提出正确的方法吗?
控制器.java
@POST
@Path("/modelInfo")
@Produces({ "application/json" })
public Response getPretrainedModel(MultipartFile data) throws IOException {
String content = new String(data.getBytes(), StandardCharsets.UTF_8);
return Response.status(Response.Status.OK).entity(content).build();
}
文件.json
{
"documents": [
{
"id": "1",
"text": "abc"
}
]
}
我在请求正文中将 file.json 作为 multipart/form-data 发送,我想读取文件的内容并将其存储为字符串。
解决方案
如果您使用的是 Spring 和 Spring Boot,那么您没有使用正确的注释。Spring 不支持Jax-RS
规范。因此,更改您的注释:
// @POST
// @Path("/modelInfo")
// @Produces({ "application/json" })
@PostMapping(value = "/modelInfo", produces = MediaType.APPLICATION_JSON_VALUE)
然后,要返回一个对象,您可以在方法中返回该对象:
@PostMapping(value = "/modelInfo", produces = MediaType.APPLICATION_JSON_VALUE)
public String getPretrainedModel(@RequestParam("file") MultipartFile data) throws IOException {
String content = new String(data.getBytes(), StandardCharsets.UTF_8);
return content;
}
笔记:
- 不要忘记
@RequestParam
在方法参数中添加注释以获取上传的文件。名称file
必须是您的 POST 请求上传的属性名称 - 默认情况下,当您不告诉 Spring 发送其他内容时,HTTP 响应为 200。
- 如果你想覆盖它,用注释你的方法
@ResponseStatus
推荐阅读
- r - 如何计算data.frame中日期间隔的总和?
- c++ - 在通知条件变量之前添加一个空的锁定范围会防止丢失通知吗?
- java - MockBean 未注入 MVC 控制器测试
- kentico - Kentico:10 如何同时允许 E-Mail 和 Username 认证
- scala - 如何使用Scala将值保存在文件中
- react-native - 从 Firebase JS SDK (Web) 迁移到 react-native-firebase 以进行离线存储
- r - 如何根据 R data.table 中的第一行按组进行 ifelse 计算
- c# - 两个 var 变量数据类型的并集
- react-native - 如何将道具保留在 Flatlist 内的子组件中?
- spring-boot - 无法对不存在的表进行操作