web-dev-qa-db-ja.com

Springでマルチパートファイルを文字列として読み取る方法は?

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

}

これは、バイト長またはファイルサイズの値を返しません。ファイル値をStringBufferに読み取りたい。誰かがこれに関するポインタを提供できますか?このファイルを文字列に解析する前に保存する必要があるかどうかはわかりません。もしそうなら、どのようにワークスペースにファイルを保存しますか?

12

マルチパートファイルのコンテンツを文字列にロードする場合、最も簡単な解決策は次のとおりです。

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

または、文字セットを指定する場合:

String content = new String(file.getBytes(), "UTF-8");

ただし、ファイルが大きい場合、この解決策はおそらく最適ではありません。

17
OlivierTerrien

まず、これはSpringとは関係ありません。次に、解析するためにファイルを保存する必要はありません。

マルチパートファイルのコンテンツを文字列に読み込むには、次のように Apache Commons IOUtilsクラスを使用できます

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