如何在春季将多部分文件作为字符串读取?

2022-09-01 10:31:23

我想使用高级休息客户端从桌面发布文本文件。这是我的控制器:

@RequestMapping(value = "/vsp/debug/compareConfig/{deviceIp:.*}", method = RequestMethod.POST, consumes = { "multipart/form-data" }, produces = { "application/json" })

public ResponseEntity<SuccessResult> compareCLIs(HttpServletRequest request, @RequestParam("file") MultipartFile file, @PathVariable("deviceIp") String device) 
{
log.info(file.getOriginalFilename());
byte[] bytearr = file.getBytes();
log.info("byte length: ", bytearr.length);
log.info("Size : ", file.getSize());

}

这不会返回任何字节长度或文件大小值。我想将文件值读取到字符串缓冲区。有人可以提供有关此的指示吗?我不确定在将其解析为字符串之前是否需要保存此文件。如果是这样,如何在工作区中保存文件?


答案 1

如果要将多部分文件的内容加载到字符串中,最简单的解决方案是:

String content = new String(file.getBytes());

或者,如果要指定字符集:

String content = new String(file.getBytes(), StandardCharsets.UTF_8);

但是,如果您的文件很大,则此解决方案可能不是最好的。


答案 2

首先,这与Spring无关,其次,您不需要保存文件来解析它。

要将多部分文件的内容读取到字符串中,您可以使用像这样的Apache Commons IOUtils类

ByteArrayInputStream stream = new   ByteArrayInputStream(file.getBytes());
String myString = IOUtils.toString(stream, "UTF-8");