当前位置: 首页 > article >正文

springboot获取七牛云文件上传凭证token

springboot获取七牛云文件上传凭证token

在这里插入图片描述

1.pom.xml中添加依赖:

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

2.获取密钥
登陆七牛云获取

https://portal.qiniu.com/user/key

在这里插入图片描述
3.在yml中添加七牛云配置信息

qiniu:
  accessKey: ******************************
  secretKey: **********************************
  bucket: *******************************  # 创建的存储空间名 https://portal.qiniu.com/kodo/bucket
  path: **************** # 对应存储空间的访问域名
  expireSeconds: 1800 #policy过期时间 秒

在这里插入图片描述
4.创建配置文件QiniuConfig :

package com.xxbb.springbootapi.config;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Configuration;

/**
 * @Description: 七牛云配置
 *
 * @Auther: yanghaoxing
 * @Date: 2024/10/31
 */

@AllArgsConstructor//有参数构造
@Accessors(chain = true)//链式调用
@NoArgsConstructor//无参数构造
@Data
@Configuration
public class QiniuConfig {

    @Value("${qiniu.accessKey}")
    private String accessKey;

    @Value("${qiniu.secretKey}")
    private String secretKey;

    @Value("${qiniu.bucket}")
    private String bucket;

    @Value("${qiniu.path}")
    private String path;

    @Value("${qiniu.expireSeconds}")
    private Long expireSeconds;

    /**
     * 华东机房
     */
    public com.qiniu.storage.Configuration qnConfig() {
        return new com.qiniu.storage.Configuration(Region.region0());
    }

    /**
     * 构建一个七牛上传工具实例
     */
    public UploadManager uploadManager() {
        return new UploadManager(qnConfig());
    }

    /**
     * 认证信息实例
     *
     * @return
     */
    public Auth auth() {
        return Auth.create(accessKey, secretKey);
    }

    /**
     * 构建七牛空间管理实例
     */
    public BucketManager bucketManager() {
        return new BucketManager(auth(), qnConfig());
    }
}

5.Controller:

package com.xxbb.springbootapi.controller;

import com.alibaba.fastjson.JSONObject;
import com.qiniu.storage.model.FetchRet;
import com.xxbb.springbootapi.config.AppConfig;
import com.xxbb.springbootapi.config.QiniuConfig;
import com.xxbb.springbootapi.entity.dto.JsonResult;
import com.xxbb.springbootapi.entity.dto.JsonResultData;
import com.xxbb.springbootapi.entity.dto.NetAddress;
import com.xxbb.springbootapi.service.IFileService;
import com.xxbb.springbootapi.service.impl.FileService;
import com.xxbb.springbootapi.service.impl.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Objects;

@Slf4j
@RequestMapping("file")
@Api(tags = "文件操作")
@RestController
public class FileController {

    @Autowired
    private QiniuConfig qiniuConfig;

    @GetMapping("/qiniu/policy")
    @ApiOperation("获取上传七牛凭证token")
    public JsonResultData<?> qiniuPolicy() {
        String uploadToken = qiniuConfig.auth().uploadToken(qiniuConfig.getBucket(), null, 3600, null);
        return new JsonResultData<>(uploadToken).Success();
    }
}

测试接口正常获取:
在这里插入图片描述

拿到token,后续可以直接在前端做文件上传到七牛云,当然也可以在后端做上传处理。


http://www.kler.cn/a/374502.html

相关文章:

  • 【086】基于51单片机电子音乐门铃【Proteus仿真+Keil程序+报告+原理图】
  • 维克日记:私密写作新选择,轻松记录生活点滴
  • 小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
  • 常见数据结构
  • IntelliJ IDEA 快捷键大全:提升开发效率的利器
  • FreeSWITCH实现多人电话会议功能
  • 从二维图像到三维重建:由运动到结构(SfM)的完整流程推导【含数学原理及推导】
  • 基于STM32+华为云IOT设计的大棚育苗管理系统
  • Java 反射
  • 图论BFS
  • 微信小程序之流浪动物救助:爱与希望同行
  • 【SQL】 Navicate 17 连接sql server
  • 【小白学机器学习31】 大数定律,中心极限定理,标准正态分布与概率的使用
  • Vue2指令原理手写
  • 基于SSM+微信小程序的汽车预约维修管理系统(汽车3)
  • sublime text 常用快捷键
  • Chrome与夸克谁更节省系统资源
  • 宝塔使用clickhouse踩坑
  • 《AI产品经理手册》——解锁AI时代的商业密钥
  • 从新手到专家:7款电脑平面设计软件评测
  • WPF+MVVM案例实战(十五)- 实现一个下拉式菜单(上)
  • OpenCV视觉分析之目标跟踪(3)实现基于金字塔的 Lucas-Kanade 算法来进行稀疏光流计算的类SparsePyrLKOpticalFlow的使用
  • 《解锁 TDD 魔法:高效软件开发的利器》
  • 读写chrome.storage.local
  • 股票基础交易规则——涨跌幅限制、价格笼子?
  • Java:阿里云联络中心“双呼A”功能系统接入