SpringBoot---SpringBoot整合七牛云上传图片

准备工作

1.注册并实名认证七牛云账号

不进行实名认证将不能创建空间,审核最多需要三个工作日,但通常实名认证过后1~2个小时就能收到认证成功的信息。

2.创建空间

在这里插入图片描述

3.获取几个重要信息

  • AK 和 SK

在这里插入图片描述

  • 空间名称

也就是创建空间时自己去的名字

  • 临时域名

在这里插入图片描述

代码

1.yml配置

oss:
  qiniu:
    domain: qtxxxxxxxx.hn-xxx.xxxxx.com # 访问域名(默认使用七牛云测试域名)
    accessKey: Gn0uwxxxxxxxxxxxxxxxxxxxxy3GEVmZqR58ed # 公钥 刚才的AK
    secretKey: hs-ScVOxxxxxxxxxxxo0yG33uHm8_NkmnKy # 私钥 刚才的SK
    bucketName: officxxxxxxxxxxicture  #存储空间名称

配置类

package studio.banner.officialwebsite.config;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Author: Re
 * @Date: 2021/5/15 20:48
 */
@Data
@Component
public class QiNiuYunConfig {
    /**
     * 七牛域名domain
     */
    @Value("${oss.qiniu.domain}")
    private String qiniuDomain;
    /**
     * 七牛ACCESS_KEY
     */
    @Value("${oss.qiniu.accessKey}")
    private String qiniuAccessKey;
    /**
     * 七牛SECRET_KEY
     */
    @Value("${oss.qiniu.secretKey}")
    private String qiniuSecretKey;
    /**
     * 七牛空间名
     */
    @Value("${oss.qiniu.bucketName}")
    private String qiniuBucketName;
}

2.Service接口

package studio.banner.officialwebsite.service;

import java.io.FileInputStream;

/**
 * @Author: Re
 * @Date: 2021/5/15 22:42
 */
public interface IQiNiuYunService {
    /**
     * 上传照片
     * @return
     * @param file
     * @param path
     */
    String updatePhoto(String path, FileInputStream file);
}

3.Service实现

package studio.banner.officialwebsite.service.Impl;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import studio.banner.officialwebsite.config.QiNiuYunConfig;
import studio.banner.officialwebsite.service.IQiNiuYunService;

import java.io.FileInputStream;

/**
 * @Author: Re
 * @Date: 2021/5/15 22:43
 */
@Service
public class QiNiuYunServiceImpl implements IQiNiuYunService {
    protected static Logger logger = LoggerFactory.getLogger(QiNiuYunServiceImpl.class);
    @Autowired
    QiNiuYunConfig qiNiuYunConfig;
    @Override
    public String updatePhoto(String key, FileInputStream file) {
        /**
         * 构造一个带指定Region对象的配置类
         */
        Configuration cfg = new Configuration(Region.region2());
        /**
         * 其他参数参考类注释
         */
        UploadManager uploadManager = new UploadManager(cfg);
        /**
         * 生成上传凭证,然后准备上传
         */
        logger.info("密钥信息"+qiNiuYunConfig.getQiniuBucketName()+qiNiuYunConfig.getQiniuAccessKey()+qiNiuYunConfig.getQiniuSecretKey());
        Auth auth = Auth.create(qiNiuYunConfig.getQiniuAccessKey(), qiNiuYunConfig.getQiniuSecretKey());
        String upToken = auth.uploadToken(qiNiuYunConfig.getQiniuBucketName());
        try {
            Response response = uploadManager.put(file, key, upToken,null,null);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            logger.info(putRet.key);
            logger.info(putRet.hash);
        } catch (QiniuException ex) {
            Response r = ex.response;
            logger.error(r.toString());
            try {
                logger.error(r.bodyString());
            } catch (QiniuException e) {
                r = e.response;
                logger.error(r.toString());
            }
        }
        return "http://"+qiNiuYunConfig.getQiniuDomain()+"/"+key;
    }
}

4.Controller层

package studio.banner.officialwebsite.controller.background;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import studio.banner.officialwebsite.service.IQiNiuYunService;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.UUID;

/**
 * @Author: Re
 * @Date: 2021/5/16 7:55
 */
@RestController
@Api(tags = "上传图片接口",value = "UploadPhotoController")
public class UploadPhotoController {
    @Autowired
    protected IQiNiuYunService qiNiuYunService;
    @PostMapping("/upload")
    @ApiOperation(value = "上传图片",notes = "上传图片不能为空",httpMethod = "POST")
    public String upload(@RequestPart MultipartFile file) {
        // 获取文件名
        String fileName = file.getOriginalFilename();
        // 生成随机的图片名
        String imgName = UUID.randomUUID() + "-" +fileName;
        if (!file.isEmpty()) {

            FileInputStream inputStream = null;
            try {
                inputStream = (FileInputStream) file.getInputStream();
                String path = qiNiuYunService.updatePhoto(imgName,inputStream);
                System.out.print("七牛云返回的图片链接:" + path);
                return path;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "上传失败";
        }
        return "上传失败";
    }
}

Swagger测试

在这里插入图片描述
响应体为
在这里插入图片描述
复制链接进入
在这里插入图片描述
文章参考:
https://www.cnblogs.com/code-duck/p/13406348.html
七牛云JAVASDK

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值