前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >下载网络地址到minio

下载网络地址到minio

作者头像
是小张啊喂
发布2022-10-05 17:14:53
1.1K0
发布2022-10-05 17:14:53
举报
文章被收录于专栏:软件

step1、首先需要处理minio上传文件

代码语言:javascript
复制
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.4.4</version>
</dependency>

基于minio 8.4.4上传文件与原先的7.0版本差距还是有点大的,大版本之间的代码不兼容

代码语言:javascript
复制
    /**
     * minio的上传地址
     */
    @Value("${minio.endpoint}")
    private String endpoint;

    /**
     * 账号
     */
    @Value("${minio.access.key}")
    private String accessKey;

    /**
     * 账号密码
     */
    @Value("${minio.secret.key}")
    private String secretKey;

    /**
     * 存储桶名称
     */
    @Value("${minio.bucket.name}")
    private String bucket;

    /**
     * 上传文件
     * @param inputStream 文件流
     * @param fileName 文件名称
     * @param size 文件大小 long
     * @return 上传文件的minio地址 url
     */
    @SneakyThrows
    @SuppressWarnings("all")
    public String upLoadFile(InputStream inputStream, String fileName, Long size) {

        // 判断传入参数是否空值
        if (!StringUtils.hasLength(bucket)) {
            return "bucketName not allowed null";
        }

        // 创建客户端对象
        MinioClient minioClient =
                MinioClient.builder()
                        .endpoint(endpoint)
                        .credentials(accessKey, secretKey)
                        .build();

        // 拼接图片地址
        String url = MessageFormat.format("{0}{1}/{2}", endpoint, bucket, fileName);
        log.info("url:{}", url);

        minioClient.putObject(
                PutObjectArgs.builder().bucket(bucket).object(fileName).stream(
                                inputStream, size, -1)
                        .build());

        return url;
    }

step2、处理网络在线图片地址

代码语言:javascript
复制
/**
 * 上传线上图片
 * @param imgUrl 在线图片url
 * @return 上传文件的minio地址 url
 */
@SneakyThrows
@SuppressWarnings("all")
public String getInputStream(String imgUrl) {
    URL url = new URL(imgUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5 * 1000);
    // 获取图片的大小
    int size = conn.getContentLength();
    // 通过输入流获取图片数据
    InputStream inStream = conn.getInputStream();
    return upLoadFile(inStream, MinIoUpLoad.getSuffix(imgUrl), Long.parseLong(String.valueOf(size)));
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档