您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

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

不忘初心 不忘初心 2019-11-15 围观() 评论() 点赞() JAVA开发

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

在前面的文章中,我已经疯狂吐槽了七牛云的目录结构,但还是用着挺舒服的,在这里提供一个非常简洁的七牛云资源上传工具类,是我自己用到的,随手写的,也不是很详细,只封装了它的上传和删除两个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() + "]完成");
        }
    }

}

oss七牛云

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们