七牛云图片上传 java工具类



import com.alibaba.fastjson.JSONObject;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.UUID;

/**
 * 七牛云上传
 */
@Slf4j
@Component
public class QiNiuUtil {
    @Value("${qiniu.accessKey}")
    private   String accessKey ;
    @Value("${qiniu.secretKey}")
    private   String secretKey ;
    @Value("${qiniu.bucketname}")
    private   String bucketName ;
    @Value("${qiniu.domain}")
    private   String domain ;
    // 设置好账号的ACCESS_KEY和SECRET_KEY
    private static String ACCESS_KEY ;
    private static String SECRET_KEY;
    // 要上传的空间
    private static String bucket_Name ;
    //域名
    private  static String qiniuDoamin ;
    @PostConstruct
    public void init() {
        QiNiuUtil.ACCESS_KEY = accessKey;
        QiNiuUtil.SECRET_KEY = secretKey;
        QiNiuUtil.bucket_Name = bucketName;
        QiNiuUtil.qiniuDoamin = domain;
    }

    public static String saveImage(MultipartFile file)  {
        try {
            // 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone
            //TODO 这个地区到时候要切回来,域名没好前用海外的地区
            Configuration cfg = new Configuration(Zone.zoneNa0());
            UploadManager uploadManager = new UploadManager(cfg);
            int dotPos = file.getOriginalFilename().lastIndexOf(".");
            if (dotPos < 0) {
                return null;
            }
            String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();

            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
            log.info("文件名称{}",fileName);
            // 调用put方法上传
            //获取token
            String token = Auth.create(ACCESS_KEY, SECRET_KEY).uploadToken(bucket_Name);
            Response res = uploadManager.put(file.getBytes(), fileName, token);
            log.info("------七牛开始返回上传结果--------");
            log.info("七牛返回上传结果[{}]",res);
            // 打印返回的信息
            if (res.isOK() && res.isJson()) {
                // 返回这张存储照片的地址
                return qiniuDoamin+JSONObject.parseObject(res.bodyString()).getString("key");
            } else {
                log.error("七牛异常:" + res.bodyString());
                return null;
            }
        } catch (QiniuException e) {
            // 请求失败时打印的异常的信息
            log.error("七牛异常:" + e.getMessage());
            return null;
        } catch (Exception e) {
            log.error("七牛异常:" + e.getMessage());
            e.printStackTrace();
            return null;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
七牛云提供了丰富的工具和SDK,方便开发者在各种语言和平台上进行文件上传和下载操作。以下是七牛云实现上传下载图片的工具包: 1. Qiniu Java SDK:Java开发者可以使用Qiniu Java SDK来上传和下载文件,包括图片。该SDK提供了简单易用的API接口和丰富的功能,支持上传下载进度监听和断点续传等特性。 2. Qiniu Node.js SDK:Node.js开发者可以使用Qiniu Node.js SDK来上传和下载文件,包括图片。该SDK提供了简单易用的API接口和丰富的功能,支持上传下载进度监听和断点续传等特性。 3. Qiniu Python SDK:Python开发者可以使用Qiniu Python SDK来上传和下载文件,包括图片。该SDK提供了简单易用的API接口和丰富的功能,支持上传下载进度监听和断点续传等特性。 4. Qiniu PHP SDK:PHP开发者可以使用Qiniu PHP SDK来上传和下载文件,包括图片。该SDK提供了简单易用的API接口和丰富的功能,支持上传下载进度监听和断点续传等特性。 5. Qiniu Go SDK:Go开发者可以使用Qiniu Go SDK来上传和下载文件,包括图片。该SDK提供了简单易用的API接口和丰富的功能,支持上传下载进度监听和断点续传等特性。 以上是七牛云提供的一些常用语言的SDK,开发者可以根据需要选择相应的工具包来实现上传下载图片的功能。另外,七牛云还提供了丰富的文档和示例代码,方便开发者快速上手并完成开发任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值