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();
    }
相关推荐
fish_xk9 小时前
c++内存管理
开发语言·c++·算法
阿维的博客日记9 小时前
锁消除和锁粗化
java·逃逸分析
云烟成雨TD9 小时前
Spring AI 1.x 系列【26】结构化输出执行流程
java·人工智能·spring
独特的螺狮粉9 小时前
城市空气质量简易指数查询卡片:鸿蒙Flutter框架 实现的空气质量查询应用
开发语言·flutter·华为·架构·harmonyos
网域小星球9 小时前
C语言从0入门(八)|函数基础:封装、调用与参数传递精讲
c语言·开发语言
东宇科技9 小时前
如何使用js进行抠图。识别商品主体
开发语言·javascript·ecmascript
Dxy12393102169 小时前
Python使用PyEnchant详解:打造高效拼写检查工具
开发语言·python
网域小星球9 小时前
C 语言从 0 入门(十五)|综合小项目:菜单交互与简易功能实现
c语言·开发语言·交互
网域小星球10 小时前
C 语言从 0 入门(十六)|动态内存管理:malloc /free/calloc /realloc 精讲
c语言·开发语言·free·malloc·动态内存
雪的季节10 小时前
qt信号槽跨线程使用时候的坑
java·开发语言·qt