在Rest API中发送图像文件数据

时间:2017-02-28 06:31:50

标签: java spring image rest

对于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将图像数据/上传图像发送到服务器?

1 个答案:

答案 0 :(得分:0)

感谢您的建议,我正在使用MultiPart文件处理此问题。

@RequestMapping(value="/uploadImage", method=RequestMethod.POST)
    public @ResponseBody String imageUpload( 
            @RequestParam("imageFile") MultipartFile file){
         //upload file using byte date from file
    }