How to read a Multipart file as a string in Spring?

nivedita rahurkar picture nivedita rahurkar · Jul 13, 2015 · Viewed 42.2k times · Source

I want to post a text file from my desktop using Advanced Rest Client. This is my controller:

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

}

This does not return any value for byte length or file size. I want to read the file values to a StringBuffer. Can someone provide pointers regarding this? I am not sure if I need to save this file before parsing it to a string. If so how do I save the file in the workspace?

Answer

OlivierTerrien picture OlivierTerrien · Apr 19, 2017

If you want to load the content of a Multipart file into a String, the easiest solution is:

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

Or, if you want to specify the charset:

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

However, if your file is huge, this solution is maybe not the best.