【问题标题】:Sending Large JSON with multiple input Input Files发送具有多个输入输入文件的大型 JSON
【发布时间】:2021-10-25 20:12:34
【问题描述】:

我正在尝试上传一些带有大型 JSON Body 的文件,

以前(当没有文件上传时),我使用@RequestBody 用于 JSON,它会自动将我的请求解析为 Object,如下所示。

@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody ) 
{

myService.uploadData(jsonBody)

}

但现在由于我正在尝试实现上传功能,我发现文件和 JSON 可以通过 @RequestParameter 发送,但正如 here 所述,在 @RequestParam 中发送大 JSON 不是一个好主意,因为它附加它带有 URL。

这就是我想要做的,

@PostMapping("/TestEndPoint")
public void uploadData(@RequestBody MyClass jsonBody , @RequestParam("file") MultipartFile file ) 
{

myService.uploadData(jsonBody)

}

我读到您必须传递请求正文或请求参数(在正文中),如果正确,还有什么替代方法?

【问题讨论】:

    标签: java spring spring-boot rest postman


    【解决方案1】:

    您也可以将 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 转换为字节并将其作为请求参数添加到请求中。我还没有测试过代码,但我猜它应该像这样工作。

    【讨论】:

    • 可能是另一种选择,但需要在客户端和服务器端进行一些修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2015-08-04
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多