对于Spring Rest API,我试图在Request Body中使用Base 64编码的字符串发送图像数据 - 我将使用以下方法将其解码并作为图像文件存储在Server的文件系统中。
public static BufferedImage decodeToImage(String image) {
BufferedImage image = null;
byte[] imageByte;
try {
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(image);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
return image;
}
编码方法,
public static String encodeToString(BufferedImage image, String type) {
String imageString = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ImageIO.write(image, type, bos);
byte[] imageBytes = bos.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
imageString = encoder.encode(imageBytes);
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
return imageString;
}
但是,对于100 kb大小的图像文件 - Base 64编码的String的长度是100万个字符。此大尺寸数据无法在其他API请求正文中发送。
是否有更好的方法使用Rest Web Services将图像数据/上传图像发送到服务器?
答案 0 :(得分:0)
感谢您的建议,我正在使用MultiPart文件处理此问题。
@RequestMapping(value="/uploadImage", method=RequestMethod.POST)
public @ResponseBody String imageUpload(
@RequestParam("imageFile") MultipartFile file){
//upload file using byte date from file
}