写给大忙人看的 - Java中拉取网络图片上传至MinIO服务器(5)

简介: 在日常开发过程中,我们会需要将第三方授权的用户头像上传保存至我们自己的服务器例如:微信用户头像,在用户更改头像后,原先的头像地址会失效,这时我们如果直接使用该用户的微信头像图片地址,则会失效

背景

在日常开发过程中,我们会需要将第三方授权的用户头像上传保存至我们自己的服务器

例如:微信用户头像,在用户更改头像后,原先的头像地址会失效,这时我们如果直接使用该用户的微信头像图片地址,则会失效

那么我们就需要将微信用户的头像拉取存储到我们自己的文件服务器上,这样就不会失效了

1、将网络图片转化为 InputStream 对象

package com.mty.common.utils;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
 * 文件处理工具类
 */
public class FileUtils {
    /**
     * 通过网络地址获取文件InputStream
     *
     * @param path 地址
     * @return
     */
    public static InputStream returnBitMap(String path) {
        if (StringUtils.isBlank(path)) {
            return null;
        }
        URL url = null;
        InputStream is = null;
        try {
            url = new URL(path);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        try {
            // 利用HttpURLConnection对象,我们可以从网络中获取网页数据.
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true);
            conn.connect();
            // 得到网络返回的输入流
            is = conn.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return is;
    }
}

通过 HttpURLConnection 对象利用网络图片地址,将文件拉取下来转化为输入流对象

2、上传至文件服务器 Minio

/**
     * 上传微信头像
     *
     * @param url 网络图片地址
     * @return
     */
    public String uploadFileWithNetFile(String url) {
        if (StringUtils.isBlank(url)) {
            return null;
        }
        try {
            InputStream inputStream = FileUtils.returnBitMap(url);
            // 判断上传文件是否为空
            if (null == inputStream) {
                return null;
            }
            // 判断存储桶是否存在,不存在则创建
            createBucket(MinioConst.MINIO_BUCKET);
            // uuid 生成文件名
            String uuid = String.valueOf(UUID.randomUUID());
            // 新的文件名
            String fileName = "wxAvatar/" + DateUtils.getYyyymmdd() + "/" + uuid + ".jpg";
            // 开始上传
            client.putObject(MinioConst.MINIO_BUCKET, fileName, inputStream, "jpg");
            // 返回图片的访问路径
            return minioProp.getEndpoint() + "/" + MinioConst.MINIO_BUCKET + "/" + fileName;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

至此,我们就完成了将网络图片上传至自己的文件服务器操作

目录
相关文章
|
18天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
43 2
|
23天前
|
存储 安全 数据可视化
提升网络安全防御有效性,服务器DDoS防御软件解读
提升网络安全防御有效性,服务器DDoS防御软件解读
37 1
提升网络安全防御有效性,服务器DDoS防御软件解读
|
10天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
175 1
|
1月前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
35 3
java读取linux服务器下某文档的内容
|
26天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
32 1
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
67 4
|
1月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
93 4
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
354 1
|
1月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
58 2
|
1月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
49 2
下一篇
无影云桌面