淘先锋技术网

首页 1 2 3 4 5 6 7

JSON是一种轻量级数据交互格式,而multipart/form-data是HTTP POST请求时常用的一种数据格式。multipart/form-data支持传输文件,但是JSON却没有直接传输文件的能力,那么如何利用JSON来传输文件呢?

json传multipartfile

实际上我们可以使用Base64来将文件转换成文本格式,然后将这段文本嵌入到JSON数据中。这样就可以在JSON中传输文件了。

{
    "file": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA..."
}

在服务器接收到JSON后,可以将Base64字符串转换成文件。Java代码如下:

@PostMapping("/upload")
public String upload(@RequestBody FileDTO fileDTO) throws IOException {
    String base64Str = fileDTO.getFile().split(",")[1];
    byte[] bytes = Base64.getDecoder().decode(base64Str);

    Path path = Paths.get("uploads/" + fileDTO.getFileName());
    Files.write(path, bytes);

    return "上传成功";
}

其中,FileDTO是一个简单的Java类,用于封装文件名和Base64字符串。代码如下:

public class FileDTO {
    private String fileName;
    private String file;

    // 省略 getter 和 setter
}

注意,在将Base64字符串转换成文件时,需要先通过split()方法将"data:image/jpeg;base64,"等前缀去掉。代码中使用的是", "作为分隔符。

以上就是在JSON中传输文件的简单实现方法。