七牛云

七牛云存储

  1. 账号注册
  2. 身份认证
  3. 创建存储空间
    • 注意存储区域
    • 访问控制的类别
  4. 在个人中心中记录 AccessKey与SecretKey
  5. 参照JAVA SDK开发文档编写工具类

pom依赖

<!--七牛云-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.2.19</version>
        </dependency>

存储区域所对应的Region

机房 Region
华东 Region.region0(), Region.huadong()
华北 Region.region1(), Region.huabei()
华南 Region.region2(), Region.huanan()
北美 Region.regionNa0(), Region.beimei()
东南亚 Region.regionAs0(), Region.xinjiapo()

普通上传

/**
 *      1.更新用户图片信息(用户id=key)
 *      2.访问图片
 *          存储空间分配的域名: http://q5qt6ysbg.bkt.clouddn.com
 *          加上图片的名称
 *          更新图片之后,由于七牛云的缓存问题,访问的时候,在请求连接添加上一个随机字符
 */

@Test
void contextLoads() {

    //构造一个带指定 Region 对象的配置类
    Configuration cfg = new Configuration(Region.region0());
    //...其他参数参考类注释
    UploadManager uploadManager = new UploadManager(cfg);
    //...生成上传凭证,然后准备上传
    String accessKey = "your access key";
	String secretKey = "your secret key";
    String bucket = "personal-test01";

    //如果是Windows情况下,格式是 D:\\qiniu\\test.png
    String localFilePath = "E:\\Users\\Hitenine\\Pictures\\音节.PNG";

    //默认不指定key的情况下,以文件内容的hash值作为文件名
    String key = "test01"; //代表存储到空间的文件名  可以用用户ID做key

    //身份认证
    Auth auth = Auth.create(accessKey, secretKey);

    //指定覆盖上传
    String upToken = auth.uploadToken(bucket,key);
    // String upToken = auth.uploadToken(bucket);
    try {
        //上传
        Response response = uploadManager.put(localFilePath, key, upToken);
        //解析上传成功的结果
        DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
        System.out.println(putRet.key);
        System.out.println(putRet.hash);
    } catch (QiniuException ex) {
        Response r = ex.response;
        System.err.println(r.toString());
        try {
            System.err.println(r.bodyString());
        } catch (QiniuException ex2) {
            //ignore
        }
    }
}

断点续传

//断点续传
@Test
public void test01() {
    //构造一个带指定 Region 对象的配置类
    Configuration cfg = new Configuration(Region.region0());
    //...其他参数参考类注释
    //...生成上传凭证,然后准备上传
    String accessKey = "your access key";
	String secretKey = "your secret key";
    String bucket = "personal-test01";
    //如果是Windows情况下,格式是 D:\\qiniu\\test.png
    String localFilePath = "E:\\Users\\Hitenine\\Documents\\Documents.rar";
    //默认不指定key的情况下,以文件内容的hash值作为文件名
    String key = "test02";
    Auth auth = Auth.create(accessKey, secretKey);
    String upToken = auth.uploadToken(bucket);

    //断点续传  本地路径 C:\Users\Hitenine\AppData\Local\Temp\personal-test01
    String localTempDir = Paths.get(System.getProperty("java.io.tmpdir"), bucket).toString();
    System.err.println(localTempDir);
    try {
        //设置断点续传文件进度保存目录
        FileRecorder fileRecorder = new FileRecorder(localTempDir);
        UploadManager uploadManager = new UploadManager(cfg, fileRecorder);
        try {
            Response response = uploadManager.put(localFilePath, key, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println(putRet.key);
            System.out.println(putRet.hash);
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

编写Util工具类

public class QiniuUploadUtil {

    private static final String accessKey = "Jzv_bSB4SBqGUT7t_BNg6Re-T3Irri7mWsfoqM2l";
    private static final String secretKey = "5t55NHRvKXqkk4GHWF549kNKWRvwwWUMBbTYnMsn";
    private static final String bucket = "personal-test01";
    private static final String prix = "http://q5qt6ysbg.bkt.clouddn.com/";
    private UploadManager manager;

    public QiniuUploadUtil(Region region) {
        //初始化基本配置,构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(region);
        //创建上传管理器
        UploadManager uploadManager = new UploadManager(cfg);
    }

    //覆盖
    public String upload(String imgName, byte[] bytes) {
        //身份认证
        Auth auth = Auth.create(accessKey, secretKey);
        //指定覆盖上传
        String upToken = auth.uploadToken(bucket, imgName);
        try {
            //上传
            Response response = manager.put(bytes, imgName, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            //返回请求地址  缓存原因加上后缀
            return prix + putRet.key + "?t=" + new Date().getTime();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

}

注意七牛云的缓存

posted @ 2020-02-15 22:36  Nine_Hite  阅读(403)  评论(0)    收藏  举报