本文编写于 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"
}