本文编写于 858 天前,最后修改于 858 天前,其中某些信息可能已经过时。

首先需要按照七牛云官网文档 在项目pom.xml引入一下依赖相关依赖

<dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.7.0, 7.7.99]</version>
        </dependency>

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.14.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>happy-dns-java</artifactId>
            <version>0.1.6</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

关于Region的说明

引入完成之后,自己新建一个七牛云的工具类 按照官网的例子自己改写一下

public class qiniuUtils {

    Configuration cfg = new Configuration(Region.region2());  //Region.region2()华南 官网也有说明 按照自己在七牛云新建的bucket地区更换

    UploadManager uploadManager = new UploadManager(cfg);

    public String uploadFile(InputStream file,String accessKey,String secretKey,String bucket,String domain,String fileName){
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = fileName;  //传过来的文件名

        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        try {
            Response response = uploadManager.put(file, key, upToken,null,null);
            //解析上传成功的结果
            DefaultPutRet putRet = null;
            try {
                putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            } catch (QiniuException e) {
                e.printStackTrace();
                return "异常";
            }
            System.out.println(putRet.key);
            //System.out.println(putRet.hash);
        }catch(Exception ex) {
            ex.getMessage();
            return "异常";
        }
        return domain+key;
    }
}

再去配置SpringBoot的 yml文件 方便自己以后维护修改七牛的 accessKey,secretKey,bucket,domain 例如博主的
accessKey,secretKey 可以去七牛云密钥管理新建 七牛云密钥管理 domain是绑定域名 七牛云默认的域名默认只有30天,如果自己有的话,直接绑定自己的域名

qiniu:
  bucket: "填写七牛云的bucket名称"
  accessKey: "填写七牛云的accessKey"
  secretKey: "填写七牛云的secretKey"
  domain: "https://cdn.luncode.com/"

然后就可以去写自己的上传API了 博主这里使用的JSONResult 是别人封装好的,主要是返回给前端Json数据

@RestController
public class ApiController {

    @Value("${qiniu.accessKey}")
    String accessKey;  //这里就是读取上面yml中配置的七牛信息
    @Value("${qiniu.secretKey}")
    String secretKey;
    @Value("${qiniu.bucket}")
    String bucket;
    @Value("${qiniu.domain}")
    String domain;
    

    @PostMapping("Upload")
    @ResponseBody
    public JSONResult Upload(@RequestParam("file") MultipartFile file){
        try {
            InputStream fileStream = file.getInputStream();
            String call = new qiniuUtils().uploadFile(fileStream,
                    accessKey,
                    secretKey,
                    bucket,
                    domain,
                    file.getOriginalFilename());
            return JSONResult.ok(call);
        } catch (IOException e) {
            //return JSONResult.errorMsg("异常");
            e.printStackTrace();
        }
        return JSONResult.errorMsg("上传异常");
    }
}

JSONResult 我还是放一份 这里下载JSONResult.java

这些操作完成之后 就可以把项目运行起来了

博主这里使用POSTMAN测试


输出这样的结果就完成了上传

{
    "status": 200,
    "msg": "OK",
    "data": "https://cdn.luncode.com/ac690ae0035bbe36c56578effb75f21ab259e3fe.jpg"
}