准备一个工具类:
package com.by.until;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
public class QiniuUtils {
public static String accessKey = "你自己的key";
public static String secretKey = "你自己的";
public static String bucket = "你自己的";//创建的存储空间的名称
public static void upload2Qiniu(String filePath,String fileName){
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone1());
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(filePath, fileName, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
} catch (QiniuException ex) {
Response r = ex.response;
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
}
//上传文件
public static void upload2Qiniu(byte[] bytes, String fileName){
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone1());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = fileName;
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);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
}
//删除文件
public static void deleteFileFromQiniu(String fileName){
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone1());
String key = fileName;
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());
}
}
}
使用实例:
public Result upload(MultipartFile imgFile) { //MultipartFile主要用于文件上传;imgFile是前端vue中的name属性
try {
//1.获取上传文件的后缀名,通过getOriginalFilename()方法获取文件名,再将其转换为字符串
String fileName = imgFile.getOriginalFilename().toString();
String imgEnd = fileName.substring(fileName.lastIndexOf("."));
//2.获取上传文件的前缀名,通过uuid生成唯一字符串
UUID beginName = UUID.randomUUID();
//3.拼接上传文件名(eg:1.jpg)
String imgFileName = beginName + imgEnd;
//调用工具类上传文件
QiniuUtils.upload2Qiniu(imgFile.getBytes(), imgFileName);
return new Result(true, MessageConstant.PIC_UPLOAD_SUCCESS, imgFileName);
} catch (Exception e) {
e.printStackTrace();
return new Result(true, MessageConstant.PIC_UPLOAD_FAIL);
}
}