Java-根据HTTP链接读取文件转换为base64

1.方法调用 本地路径或http路径

java 复制代码
   public static String fileToBase64(String filePath) throws IOException {
        // 判断是否为URL
        if (filePath.startsWith("http://") || filePath.startsWith("https://")) {
            byte[] bytes = downloadFileToByteArray(filePath);
            return Base64.getEncoder().encodeToString(bytes);
        } else {
            // 处理本地文件
            File file = new File(filePath);
            try (FileInputStream fileInputStream = new FileInputStream(file)) {
                byte[] bytes = new byte[(int) file.length()];
                fileInputStream.read(bytes);
                return Base64.getEncoder().encodeToString(bytes);
            }
        }
    }

2.请求http连接文件资源获取并存入缓存

java 复制代码
public static byte[] downloadFileToByteArray(String fileUrl) throws IOException {
        // 创建 URL 对象
        URL url = new URL(fileUrl);
        // 打开 HTTP 连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        // 设置请求方法为 GET
        connection.setRequestMethod("GET");

        // 获取输入流
        BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
        // 创建字节数组输出流,用于存储从输入流读取的数据
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        // 定义缓冲区
        byte[] buffer = new byte[1024];
        int bytesRead;
        // 从输入流读取数据到缓冲区,并将缓冲区的数据写入输出流
        while ((bytesRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
        }

        // 关闭输入流和输出流
        in.close();
        out.close();

        // 断开 HTTP 连接
        connection.disconnect();

        // 将字节数组输出流中的数据转换为字节数组并返回
        return out.toByteArray();
    }
相关推荐
好像不对劲几秒前
python去除pdf白边
开发语言·python·pdf·kindle
sunnyday04262 分钟前
Spring Boot 中的优雅重试机制:从理论到实践的完整指南
java·spring boot·后端
C++ 老炮儿的技术栈2 分钟前
#include <filename.h> 和 #include “filename.h” 有什么区别?
linux·c语言·开发语言·c++·windows·visual studio
Ethan-D3 分钟前
每日一题#21 二维 DP + 计数类
java·python·算法·leetcode·动态规划
虫小宝4 分钟前
企业微信官方API与自建机器人系统的鉴权体系对比及Java集成方案
java·机器人·企业微信
lkbhua莱克瓦246 分钟前
Web前端开发核心认知与技术演进
开发语言·前端·笔记·javaweb
txinyu的博客6 分钟前
HTTP的版本解析
网络·网络协议·http
运维行者_7 分钟前
Applications Manager 引入持续剖析技术,突破传统 APM 监控瓶颈
java·运维·网络·jvm·数据库·安全·web安全
biyezuopinvip9 分钟前
基于JavaSSM+MySQL的机房预约管理系统设计与实现
java·mysql·毕业设计·论文·ssm·jsp·机房预约管理系统设计与实现
开开心心_Every9 分钟前
免费视频画质增强:智能超分辨率无损放大
java·服务器·前端·python·学习·edge·powerpoint