1
クライアント側では、画像を幅と高さ250ピクセルにトリミングします。私はbase64として画像を送信します。作物の結果は常にbase64であり、この複数の部分から作りたい場合にはいくつかの問題があります。Base64のアップロードパフォーマンス
誰かが画像を直接アップロードする場合や、直接使用する状況がある場合に、画像をコントローラに送信して管理するための、画像を文字列値として送信する場合のパフォーマンスについては疑問です。
画像のアップロード、管理、検証の正しい方法はありますか?
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<?> upload(@RequestParam("imageValue") String imageValue, HttpServletRequest request) {
try {
String splitter = ";base64,";
String[] splitted = imageValue.split(splitter);
if (splitted.length != 2)
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
byte[] imageByte = Base64.decodeBase64(splitted[1]);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
BufferedImage image = ImageIO.read(bis);
if (image == null || image.getHeight() > 250 || image.getWidth() > 250)
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
FooImageData fooImageData = new FooImageData();
fooImageData.setBase64(imageByte);
fooImageData.setMimeType(splitted[0] + splitter);
fooImageDataService.save(fooImageData);
bis.close();
return new ResponseEntity<>(HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
POSTパラメータはリクエストの本体で渡されます。 – EJP