首页   >   代码编程   >   JAVA开发

分享一个简单的七牛云资源上传工具类

在前面的文章中,我已经疯狂吐槽了七牛云的目录结构,但还是用着挺舒服的,在这里提供一个非常简洁的七牛云资源上传工具类,是我自己用到的,随手写的,也不是很详细,只封装了它的上传和删除两个api,大家可以参考一下。

来,大家提前感受一下七牛云的目录。。。

分享一个简单的七牛云资源上传工具类

目录直接强加在文件名上,骚得离谱!!!

一、引入官方指定的jar包

<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>[7.2.0, 7.2.99]</version>
</dependency>
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>happy-dns-java</artifactId>
    <version>0.1.6</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.2</version>
    <scope>compile</scope>
</dependency>

二、封装api

package com.wolffy.util;

import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.File;
import java.io.InputStream;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;

/**
 * 七牛上传工具类,https://developer.qiniu.com/kodo/sdk/1239/java
 * Created by wolffy on 2019/09/16.
 */
@Setter
@Slf4j
public class QiniuUtil {

    /**
     * 密钥ID
     */
    private String accessKey;

    /**
     * 加密钥匙
     */
    private String secretKey;

    /**
     * 存储桶
     */
    private String bucket;

    /**
     * 上传本地文件到七牛云
     *
     * @param filePath 文件路径
     * @param key      文件名字,默认不指定key的情况下,以文件内容的hash值作为文件名
     * @return DefaultPutRet
     */
    public DefaultPutRet upload(String filePath, String key) {
        log.info("path: {},key: {}", filePath, key);
        try {
            // 鉴权
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            // 自定义配置(指定分区,减少网络请求,加快请求速度)
            Configuration cfg = new Configuration(Region.region2());
            UploadManager uploadManager = new UploadManager(cfg);
            // 上传
            Response response = uploadManager.put(filePath, key, upToken);
            //解析上传成功的结果
            String result = response.bodyString();
            log.info("上传七牛云完成:{}", result);
            return JsonUtil.parse(result, DefaultPutRet.class);
        } catch (Exception e) {
            log.error("上传本地文件到七牛云失败:{}", ExceptionUtils.getStackTrace(e));
        }
        return null;
    }

    /**
     * 上传本地文件到七牛云
     *
     * @param filePath 文件路径
     * @return DefaultPutRet
     */
    public DefaultPutRet upload(String filePath) {
        return upload(filePath, null);
    }

    /**
     * 上传本地文件到七牛云,IO流方式
     *
     * @param inputStream 输入流
     * @param key         上传文件保存的文件名
     * @return DefaultPutRet
     */
    public DefaultPutRet upload(InputStream inputStream, String key) {
        try {
            // 鉴权
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            // 自定义配置(指定分区,减少网络请求,加快请求速度)
            Configuration cfg = new Configuration(Region.region2());
            UploadManager uploadManager = new UploadManager(cfg);
            // 上传
            Response response = uploadManager.put(inputStream, key, upToken, null, null);
            //解析上传成功的结果
            String result = response.bodyString();
            log.info("上传七牛云完成:{}", result);
            return JsonUtil.parse(result, DefaultPutRet.class);
        } catch (Exception e) {
            log.error("上传文件IO流到七牛云失败:{}", ExceptionUtils.getStackTrace(e));
        }
        return null;
    }

    /**
     * 上传本地文件到七牛云,IO流方式
     *
     * @param inputStream 输入流
     * @return DefaultPutRet
     */
    public DefaultPutRet upload(InputStream inputStream) {
        return upload(inputStream, null);
    }

    /**
     * 删除七牛云上的文件
     *
     * @param key 文件名字
     */
    public void delete(String key) {
        try {
            Auth auth = Auth.create(accessKey, secretKey);
            Configuration cfg = new Configuration(Region.region2());
            BucketManager bucketManager = new BucketManager(auth, cfg);
            bucketManager.delete(bucket, key);
        } catch (Exception e) {
            log.error("删除七牛云文件失败:{}", ExceptionUtils.getStackTrace(e));
        }
    }

    public static void main(String[] args) {
        QiniuUtil qiniuUtil = new QiniuUtil();
        qiniuUtil.setAccessKey("在七牛云平台上拿到的AccessKey");
        qiniuUtil.setSecretKey("在七牛云平台上拿到的SecretKey");
        qiniuUtil.setBucket("jwcz");

        String path, key;
        DefaultPutRet ret;

        File file2 = new File("C:\\Users\\SongFei\\Desktop\\wlkk\\headimg");
        for (File file : file2.listFiles()) {
            // 这里注意,由于七牛云没有目录的概念,所以这里上传后的文件名就是:"avatar/" + file.getName()
            qiniuUtil.upload(file.getAbsolutePath(), "avatar/" + file.getName());
            System.out.println("上传[" + file.getName() + "]完成");
        }
    }

}

QQ群Ⅰ: 686430774 (已满)

QQ群Ⅱ: 718410762 (已满)

QQ群Ⅲ: 638620451 (已满)

QQ群Ⅳ: 474195684 (已满)

QQ群Ⅴ: 463034360

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-11-15

永久地址:https://www.jiweichengzhu.com/article/2fff734c8cca4ffa84f1d28cef56fd9e

评论