写点什么

Base64 码常见操作 (url 链接文件转 base64 编码、本地文件转 base64 编码等)

作者:共饮一杯无
  • 2022-11-17
    浙江
  • 本文字数:1674 字

    阅读完需:约 5 分钟

Base64码常见操作(url链接文件转base64编码、本地文件转base64编码等)

引入坐标

    <dependency>      <groupId>cn.hutool</groupId>      <artifactId>hutool-all</artifactId>      <version>5.4.3</version>    </dependency>
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version> </dependency>
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency>
复制代码

常见操作

下载远程 url 的文件并转换成 base64 编码

代码如下:


  public static String file(String url){    String encode = null;    try {      CloseableHttpClient client = HttpClients.createDefault();      HttpGet get = new HttpGet(url);      CloseableHttpResponse response = client.execute(get);      //文件流      HttpEntity httpEntity = response.getEntity();      InputStream inStream = httpEntity.getContent();      byte[] bytes = IOUtils.toByteArray(inStream);      //附件base64      encode = cn.hutool.core.codec.Base64.encode(bytes);    } catch (IOException e) {      log.error(e.getMessage(), e);    }    return encode;  }
复制代码


测试:


    /**     * 测试下载远程url的文件,转换成base64编码     * @throws Exception     */    @Test    public void testUrlFileToBase64() throws Exception {        String BASE64Str = Base64Util.file("https://xxx.oss-cn-hangzhou.aliyuncs.com/upload/20220513/165242342M");        System.out.println("BASE64Str:"+BASE64Str);    }
复制代码


因为是图片,可以复制输出的 base64 编码到这个网址验证:https://tool.jisuapi.com/base642pic.html其他 base64 操作如下:

文件转 base64 编码

  public static String fileToBase64(File file) {    try {      byte[] imageData = FileUtils.readFileToByteArray(file);      String base64 = encodeImage(imageData);      return base64;    } catch (Exception e) {      log.error(e.getMessage(), e);      return null;    }  }

public static String encodeImage(byte[] imageData) { String encodeStr = Base64.getEncoder().encodeToString(imageData); log.info("encodeImage>>" + encodeStr); return encodeStr; }
复制代码

判断一个字符串是否是 base64

  public static boolean isBase64(String str) {    String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";    return Pattern.matches(base64Pattern, str);  }
复制代码


方式一:jdk 的工具类 javax.xml.bind.DatatypeConverter

//方式一:jdk的工具类javax.xml.bind.DatatypeConverterString str = "base64字符串";//byte[]转base64String encode = DatatypeConverter.printBase64Binary(str.getBytes());System.out.println("转base64后:"+encode);//Base64转byte[]byte[] decode= DatatypeConverter.parseBase64Binary(encode);System.out.println("base64转回:"+new String(decode));
复制代码

方式二:jdk 的工具类 sun.misc.BASE64Decoder 和 sun.misc.BASE64Encoder

//方式二:jdk的工具类sun.misc.BASE64Decoder和sun.misc.BASE64Encoder//byte[]转base64BASE64Encoder base64Encoder = new BASE64Encoder();String encode1 = base64Encoder.encode(str.getBytes());System.out.println("转base64后:"+encode1);//Base64转byte[]BASE64Decoder base64Decoder = new BASE64Decoder();byte[] decodeBuffer = base64Decoder.decodeBuffer(encode1);System.out.println("base64转回:"+new String(decodeBuffer));
复制代码


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。

如有错误❌疑问💬欢迎各位大佬指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 刚刚阅读数: 3
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
Base64码常见操作(url链接文件转base64编码、本地文件转base64编码等)_Java_共饮一杯无_InfoQ写作社区