【问题标题】:Spring doesn't return JSON in fullSpring 不会完整返回 JSON
【发布时间】:2020-11-24 06:41:22
【问题描述】:

我正在使用 spring boot 和 @PostMapping 尝试返回包含 1 个 Multipart 文件和一些字符串的 POJO。当我查看 Postman 时,我只看到 Multipart 对象的一半。文件为 3kb。我没有收到任何错误。当我返回多部分变量 null 时,JSON 中的其他变量会在响应中显示,因此它们不为空。如何返回所有 JSON?

public class foo{
    public MultipartFile dataFile;
    
    public String project;
    
    public Boolean extract;

    ... getter - setter - constructor
}

我喜欢发送它

@PostMapping
public foo route(@RequestParam("dataFile") MultipartFile dataFile, ... ) {

 ...
    return fooObject;
}

回应

{
    "dataFile": {
        "name": "dataFile",
        "bytes":"MIKCAQYJKoZIhvcNAQcCoIKB8jCCge4CA... (half of the file)

【问题讨论】:

  • 你的服务器发送的标头Content-type的值是多少?
  • 服务器:Apache-Coyote/1.1 内容类型:application/json 传输编码:chunked
  • 你如何创建你的MultipartFile
  • @RequestParam("foo") MultipartFile foo 然后插入到对象构造函数中

标签: java json spring spring-boot rest


【解决方案1】:

正如我所想,MultipartFile 用于上传对象,而不是下载对象。如Javadoc中所述:

在多部分请求中收到的上传文件的表示。

也就是说,它很适合上传,但下载却不是这样。

最简单的方法(也是最直接的)是将MultipartFile 更改为byte[] 并将其发送给客户端。

这是一个例子:

public Foo getFile(MultipartFile multipartFile) {
    byte[] bytes = multipartFile.getBytes();
    return new Foo(bytes, "project");
}

【讨论】:

    猜你喜欢
    • 2021-08-06
    • 2021-07-27
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多