maven 引入七牛云SDK
java 代码
import com.alibaba.fastjson.JSON;
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.storage.model.FileInfo;
import com.qiniu.util.Auth;
import com.qiniu.util.IOUtils;
import com.qiniu.util.StringMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Service
public class QiniuServiceImpl {
@Value(value = "${qiniu.ak}")
private String ak;
@Value(value = "${qiniu.sk}")
private String sk;
@Value(value = "${qiniu.bucket}")
private String bucket;
@Value(value = "${qiniu.yuming}")
private String yuming;
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 测试代码
* @param filePath
*/
public void testUpload(String filePath) {
Configuration cfg = new Configuration(Region.xinjiapo());
UploadManager uploadManager = new UploadManager(cfg);
FileInputStream fileInputStream = null;
try {
File file = new File(filePath);
String key = file.getName();
fileInputStream = new FileInputStream(file);
byte[] bytes = IOUtils.toByteArray(fileInputStream);
Auth auth = Auth.create(ak, sk);
String upToken = auth.uploadToken(bucket, key, 3600, new StringMap().put("insertOnly", 0));
try {
Response response = uploadManager.put(bytes, key, upToken);
DefaultPutRet putRet = JSON.parseObject(response.bodyString(),
DefaultPutRet.class);
logger.info("上传成功{}", JSON.toJSONString(putRet));
} catch (QiniuException ex) {
Response r = ex.response;
logger.error("上传文件失败,返回结果{}", r.toString());
logger.error("失败body {}", r.bodyString());
}
} catch (IOException ex) {
logger.error("上传文件失败 IO 异常 {}", ex);
}finally {
try {
if(fileInputStream != null){
fileInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 上传
* @param uploadFile
* @return
*/
public String saveFile(MultipartFile uploadFile) {
Configuration cfg = new Configuration(Region.xinjiapo());
UploadManager uploadManager = new UploadManager(cfg);
String fileName = uploadFile.getOriginalFilename();
Auth auth = Auth.create(ak, sk);
String upToken = auth.uploadToken(bucket,
fileName, 3600, new StringMap().put("insertOnly", 0));
try {
Response response = uploadManager.put(uploadFile.getBytes(), fileName, upToken);
DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
return yuming + putRet.key;
} catch (QiniuException e) {
logger.error("上传文件失败 {}", JSON.toJSONString(e.response));
} catch (IOException e) {
logger.error("上传文件失败 {}", e);
}
return null;
}
/**
* 批量上传
* @param uploadFiles
* @return
*/
public List<String> saveFile(MultipartFile[] uploadFiles) {
List<String> list = new ArrayList<>();
for (MultipartFile uploadFile : uploadFiles) {
list.add(saveFile(uploadFile));
}
return list;
}
/**
* 删除文件
* @param fileName
*/
public void deleteFile(String fileName){
Configuration cfg = new Configuration(Region.xinjiapo());
Auth auth = Auth.create(ak, sk);
BucketManager bucketManager = new BucketManager(auth,cfg);
try {
bucketManager.delete(bucket, fileName);
logger.info("已删除:{}",fileName);
} catch (QiniuException ex) {
//如果遇到异常,说明删除失败
logger.error("删除失败",ex.code());
logger.error(ex.response.toString());
}
}
/**
* 查询空间文件集合
*/
public void queryFiles(){
Configuration cfg = new Configuration(Region.xinjiapo());
Auth auth = Auth.create(ak, sk);
BucketManager bucketManager = new BucketManager(auth,cfg);
BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, "");
while (fileListIterator.hasNext()) {
//处理获取的file list结果
FileInfo[] items = fileListIterator.next();
if(items.length == 0){
logger.info("空间中没有文件");
return ;
}
for (FileInfo item : items) {
logger.info("已存文件 :{}",item.key);
//删除文件
//deleteFile(item.key);
}
}
}
}
yml文件配置
结果