백엔드에서 base64 형식의 그림이 있는 메시지를 변환하여 데이터베이스에 로컬 파일의 로컬 경로를 저장하는 것이지 데이터베이스에 저장하는 것이 아니다.

1660 단어
public String parseContents(String contents) {
    //String newContents=contents;
    if (contents.indexOf("data:image/") != -1) {
        int firstIndex = contents.indexOf("data:image/") + 11;
        int index1 = contents.indexOf(";base64,");
        String type = contents.substring(firstIndex, index1);
        String fileName = "E:/uploadFiles/" + UUID.randomUUID().toString() + "." + type;
        // , 。
        System.out.println(fileName);
        BASE64Decoder decoder = new BASE64Decoder();
        OutputStream os = null;
        try {
            String imgsrc = StringUtils.substringBefore(contents.substring(contents.indexOf(";base64,") + 8), "\"");
            byte[] bytes = decoder.decodeBuffer(imgsrc);
            // src base64 servlet 
            contents = contents.replace("data:image/" + type + ";base64," + imgsrc, "/images.do?src=" + fileName);
            File file = new File(fileName);
            // 
            File fileParent = file.getParentFile();
            // 
            if (!fileParent.exists()) {
                // 
                fileParent.mkdirs();
            }
            file.createNewFile();
            os = new FileOutputStream(file);
            os.write(bytes);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
        return contents;

    }

좋은 웹페이지 즐겨찾기