java - 如何检查字符串是否是base64编码的?

标签 java spring base64

我想检查 HTML img src 是否采用 base64 编码格式,或者不在我的 java spring 后端中。如果它是 Base64 编码的,那么我将解码图像并保存到我的服务器,如果不是,我将首先根据图像 URL 路径下载,然后保存到我的服务器。我已经构建了下载图像和解码图像的功能。但无法解析base64检查。我尝试使用 try catch 检查语句,但如果它不是 base64,我不需要捕获错误。 P.S 我正在使用 java.util.Base64

public boolean isBase64(String path) {
   try {
        Base64.getDecoder().decode(path);

    } catch(IllegalArgumentException e) {   
    }
}

最佳答案

如果您通过 <img src="..." /> 收到准确的值属性那么它应该有 Data URL format

简单的正则表达式可以确定 URL 是数据还是常规。在java中它看起来像

    private static final Pattern DATA_URL_PATTERN = Pattern.compile("^data:image/(.+?);base64,\\s*", Pattern.CASE_INSENSITIVE);

    static void handleImgSrc(String path) {
        if (path.startsWith("data:")) {
            final Matcher m = DATA_URL_PATTERN.matcher(path);
            if (m.find()) {
                String imageType = m.group(1);
                String base64 = path.substring(m.end());
                // decodeImage(imageType, base64);
            } else {
                // some logging
            }
        } else {
            // downloadImage(path);
        }
    }

关于java - 如何检查字符串是否是base64编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59703733/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - 为什么Java Set包含一个要添加的对象,但没有Set元素等于该对象

Java : Cancel a running process( or task) by clicking a button in webapplication in spring

java - Hibernate SessionFactory 如何使用 LocalSessionFactoryBean Autowiring ?

javascript - 无法在 JavaScript 中解码 Base64

c# - 在 ASP.Net/C# 中验证 Base64 图像

java - 为什么java中传递给main方法的参数包含通配路径可以更改

java - 在MyBatis for IBM DB2中执行多个INSERT语句

java - 为什么Spring MVC会以404响应并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

c - 生成随机 n 字节 Base64 字符串后的不可打印字符