如何在Spring中将Multipart文件作为字符串读取?

niv*_*kar 12 java spring multipartform-data

我想使用Advanced Rest Client从我的桌面发布文本文件.这是我的控制器:

@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());

}
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*ien 17

如果要将Multipart文件的内容加载到String中,最简单的解决方案是:

String content = new String(file.getBytes());
Run Code Online (Sandbox Code Playgroud)

或者,如果要指定charset:

String content = new String(file.getBytes(), "UTF-8");
Run Code Online (Sandbox Code Playgroud)

但是,如果您的文件很大,这个解决方案可能不是最好的.


Rod*_*yas 6

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

要将Multipart文件的内容读入String,您可以像这样使用Apache Commons IOUtils类

ByteArrayInputStream stream = new   ByteArrayInputStream(file.getBytes());
String myString = IOUtils.toString(stream, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

  • `MultipartFile` 是 Spring 类型——所以问题与 Spring 有关。但是一旦你调用了`getBytes()`,你就进入了通用Java 的领域。 (4认同)