导入相关依赖:
com.qiniu
qiniu-java-sdk
[7.2.0, 7.2.99]
com.google.code.gson
gson
2.8.2
第二步
写入需要的配置信息:
dns:你的云存储空间域名(生成之后会有一个临时域名)
accessKey:你的ak
secretKey:你的sk在这里插入图片描述把这些配置信息写在一个小配置文件(XXX.properties)中,供工具类读取
dns=你的dns
accessKey=你的ak
secretKey=你的sk
第三步
导入我的工具类、代码如下:
package com.lbt.yingx_lbt.util;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
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.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
public class QiNiuYunUtil {
public static HashMap Information(){
HashMap map = new HashMap();
//读取小配置文件
Properties prop = new Properties();
//如果properties文件和某个java文件在同一目录下,可以如下读取配置文件:
//如果出现空指针异常原因可能为:要把小配置文件放在resources目录下
InputStream inStream = QiNiuYunUtil.class.getClassLoader().getResourceAsStream("QiNiuyunProperties.properties");
try {
prop.load(inStream);//properties文件
} catch (IOException e) {
e.printStackTrace();
}
String accessKey = prop.getProperty("accessKey");
String secretKey = prop.getProperty("secretKey");
String dns = prop.getProperty("dns");
String bucket = prop.getProperty("bucket");
map.put("accessKey",accessKey);
map.put("secretKey",secretKey);
map.put("dns",dns);
map.put("bucket",bucket);
return map;
}
//进行文件上唇
public static String Upload(MultipartFile file){
//获取配置文件信息
HashMap map = Information();
String accessKey = map.get("accessKey");
String secretKey = map.get("secretKey");
String dns = map.get("dns");
String bucket = map.get("bucket");
//你的域名
//1.向七牛云提交文件
String filename = file.getOriginalFilename();
String newName=+new Date().getTime()+"-"+filename;
//将域名与文件名拼接,作为上数据库的图片或视频名
String name = dns+"/"+newName;
//2.将文件转为字节数组
byte[] bytes=null;
try {
bytes = file.getBytes();
} catch (IOException e) {
e.printStackTrace();
}
//3.构造一个带指定Region对象的配置类 参数:指定的区域 华北
Configuration cfg = new Configuration(Region.region1());
//4....其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//5....生成上传凭证,然后准备上传
accessKey = "qSPGX1c7OYRRgNb2npbbPfm9tbcZ_VK8__1Rbs0C";
secretKey = "7lYjTpuzufhJWoEB9UWJZYKd2WDiif7orSGgnrE6";
bucket = "yingx-video1"; //存储空间的名字
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
//String localFilePath = "C:\\Users\\NANAN\\Desktop\\video\\人民的名义.mp4"; //文件本地路径
//6.默认不指定key的情况下,以文件内容的hash值作为文件名
String key = newName;
//根据密钥去做授权
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
//上传 文件上传 文件字节数组
Response response = uploadManager.put(bytes, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key); //文件名
//System.out.println(putRet.hash); //件内容的hash值
//http://q5u1l78s3.bkt.clouddn.com/照片.jpg 网络路径
//http://q5u1l78s3.bkt.clouddn.com/人民的名义.mp4
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
return name;
}
//删除文件 //云存储中文件的名字
public static void delete(String key){
//获取小配置文件信息
HashMap map = Information();
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
//...其他参数参考类注释
String accessKey = map.get("accessKey"); //密钥:你的AK
String secretKey = map.get("secretKey"); //密钥:你的SK
String bucket = map.get("bucket"); //存储空间的名字
Auth auth = Auth.create(accessKey, secretKey);
BucketManager bucketManager = new BucketManager(auth, cfg);
try {
bucketManager.delete(bucket, key);
} catch (QiniuException ex) {
//如果遇到异常,说明删除失败
System.err.println(ex.code());
System.err.println(ex.response.toString());
}
}
}
使用方法
//上传文件,两种方式,需要的参数不同
//MultipartFile cover:要上传的文件
//bucket:要上传的空间名称
//dns:空间域名
QiNiuYunUtil.Upload(cover,bucket,dns);
//tring fileName:文件名,String filePath:文件路径,String bucket:上传的空间名称
//返回值为上传后的文件名
String name= QiNiuYunUtil.Upload(fileName,filePath,bucket);
//删除文件
//String key:云存储中文件的名字
//String bucket:要上传的空间名称
QiNiuYunUtil.delete(key,bucket);
相关说明
关于 Region 对象和机房的关系如下:
机房 | Region |
---|---|
华东 | Region.region0() , Region.huadong() |
华北 | Region.region1() , Region.huabei() |
华南 | Region.region2() , Region.huanan() |
北美 | Region.regionNa0() , Region.beimei() |
东南亚Region.regionAs0() , Region.xinjiapo() |