java - 发送具有多个输入输入文件的大型 JSON
问题描述
我正在尝试上传一些带有大型 JSON Body 的文件,
以前(当没有文件上传时),我使用@RequestBody
的是 JSON,它会自动将我的请求解析为 Object,如下所示。
@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody )
{
myService.uploadData(jsonBody)
}
但是现在由于我正在尝试实现上传功能,我发现文件和 JSON 可以通过发送,但正如这里@RequestParameter
提到 的,在 @RequestParam 中发送大型 JSON 不是一个好主意,因为它会附加 URL。
这是我想要做的,
@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody , @RequestParam("file") MultipartFile file )
{
myService.uploadData(jsonBody)
}
我读过您必须传递请求正文或请求参数(在正文中),如果正确,有什么替代方法?
解决方案
您也可以将 JSON 作为请求参数发送,这应该非常简单。然后在控制器中手动将其转换为您的传输对象。
@PostMapping("/TestEndPoint")
public void uploadData(
@RequestParam("file") MultipartFile file1,
@RequestParam("jsonFile") MultipartFile file2) throws IOException {
String objString = new String(file2.getBytes());
MyClass jsonBody = new ObjectMapper().readValue(objString, MyClass.class);
myService.uploadData(jsonBody);
}
发送请求的客户端只需将 JSON 转换为字节并将其作为请求参数添加到请求中。我没有测试过代码,但我猜它应该像这样工作。
推荐阅读
- asp.net-core - .net core 3.0 自动迁移不会自动创建/更新/数据表
- python - 如何从内存中清除 matplotlib 图
- firebase - Fireabase CLI 停止重新上传所有函数文件夹?
- c - 静态链接的二进制文件因“找不到小程序”而失败
- html - HTML5 表格无法摆脱单元格之间的细边框
- java - Spark Structured Streaming foreach Sink 自定义编写器无法从 Kafka 主题读取数据
- postgresql - PostgresSQL:间隔字段值超出范围
- ibm-cloud - 创建公共操作不会添加到序列中
- r - 在 R Shiny 中,如何使用在该 observeEvent 之外的 observeEvent(按钮单击)中生成的数据?
- javascript - HTML/JS Select onchange 不适用于某些选择项