七牛云对象存储实现文件的上传与下载

这篇博客详细介绍了如何利用七牛云的文件存储服务进行文件上传和下载操作。首先展示了上传文件的Java代码,包括配置、认证和上传流程。接着,提供了下载文件的方法,通过构造下载URL实现。最后,给出了一个工具类`QiniuUtil`,包含上传和获取文件链接的静态方法。
摘要由CSDN通过智能技术生成

今天记录下通过七牛云文件存储来实现文件的上传与下载

文件上传

  /**
     * 上传
     * @throws FileNotFoundException
     */
    private static void upload() throws FileNotFoundException {
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huanan());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        //自己七牛云上的ak
        String accessKey = "*****************";
        //自己七牛云上的sk
        String secretKey = "*****************";
        //自己七牛云上的设置的空间名
        String bucket = "*********";
        //如果是Windows情况下,格式是 D:\\qiniu\\test.png
        String localFilePath = "E:\\test\\girls.jpg";
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;
        Auth auth = Auth.create(accessKey, secretKey);
        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
            }
        }
    }

文件下载

 /**
     * 下载
     * @throws IOException
     */
    public static void download() throws IOException {
        //七牛云上存储文件生成的文件名
        String fileName = "FlBbPMKQw-ifOiIGa8cKR7VHazGr";
        //自己七牛云上的域名
        String domainOfBucket = "**************";
        String encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20");
        String finalUrl = String.format("%s/%s", domainOfBucket, encodedFileName);
        System.out.println(finalUrl);

    }

测试

当我在运行上传图片的时候控制台会打印储存在七牛云上自动生成的文件名,我的为:

FlBbPMKQw-ifOiIGa8cKR7VHazGr

再运行下载的文件会自动生成一个文件链接,在浏览器上访问生成的链接即可,我的控制台生成的链接为

qz3gdw53p.hn-bkt.clouddn.com/FlBbPMKQw-ifOiIGa8cKR7VHazGr

访问以上链接

在这里插入图片描述

文件上传与下载工具类

@Slf4j
public class QiniuUtil {

    public static void upload(String accessKey, String secretKey,String bucket,String key,byte[] uploadBytes){
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huanan());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
//        String s = JSON.toJSONString(cfg); //{birthday:2019-01-01}
//        Configuration configuration = JSON.parseObject(s, Configuration.class);
        //...生成上传凭证,然后准备上传
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        try {

            //认证
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            try {
                Response response = uploadManager.put(uploadBytes, 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());
                log.error("把文件上传到七牛云异常:{}",r.toString());
                throw new RuntimeException("把文件上传到七牛云异常");
               /* try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }*/
            }
        } catch (Exception ex) {
            //ignore
            log.error("把文件上传到七牛云异常:{}",ex.getMessage());
            throw new RuntimeException("把文件上传到七牛云异常");
        }
    }

    public static String uploadImg(String accessKey, String secretKey,String bucket,byte[] uploadBytes){
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.huanan());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        try {

            //认证
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            String key = null;
            try {
                Response response = uploadManager.put(uploadBytes, key, upToken);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                return putRet.key;

            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                log.error("把文件上传到七牛云异常:{}",r.toString());
                throw new RuntimeException("把文件上传到七牛云异常");

            }
        } catch (Exception ex) {
            //ignore
            log.error("把文件上传到七牛云异常:{}",ex.getMessage());
            throw new RuntimeException("把文件上传到七牛云异常");
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_lifly

点喜欢就是最好的打赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值