七牛OSS,获取所有文件
依赖
<qiniu.version>[7.13.0, 7.13.99]</qiniu.version>
<qiniudns.version>0.1.6</qiniudns.version>
<!-- 七牛云 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu.version}</version>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>happy-dns-java</artifactId>
<version>${qiniudns.version}</version>
<scope>test</scope>
</dependency>
测试方法
@Resource
ISysUploadService uploadService;
@Test
void testQiNiu() throws InterruptedException {
Configuration cfg = new Configuration(Region.autoRegion());
Auth auth = Auth.create("accessKey", "secretKey");
BucketManager bucketManager = new BucketManager(auth,cfg);
BucketManager.FileListIterator it = bucketManager.createFileListIterator("bucket", "文件夹前缀", 500, null);
while (it.hasNext()) {
List<SysUpload> list = new ArrayList<>();
FileInfo[] items = it.next();
if (items.length > 1) {
System.out.println(items[0]);
}
if (items.length > 1) {
for (FileInfo item : items) {
SysUpload sysUpload = new SysUpload();
// 文件名 upload/image/20230106/1673014337871603.png
String[] split = item.key.split("/");
sysUpload.setFileName(split[split.length-1]);
sysUpload.setOriginalName(split[split.length-1]);
sysUpload.setFilePath("文件链接前缀"+item.key);
sysUpload.setUrl("文件链接前缀"+item.key);
String[] type = item.mimeType.split("/");
sysUpload.setMimeType(type[type.length-1]);
sysUpload.setCreateBy("admin");
sysUpload.setCreateTime(new Date());
sysUpload.setUpdateBy("admin");
sysUpload.setUpdateTime(new Date());
Thread.sleep(1);
list.add(sysUpload);
}
}
uploadService.saveBatch(list);
System.out.println("上传"+list.size()+"个文件");
}
}
效果
编写定时任务,每天23点检测七牛云是否有文件新增或删除变动,同步到数据库
public void syncQiNiu() {
Date date = new Date();
// syncQiNiu(DateUtils.parseDateToStr("YYYY/MM/dd", date),date);
syncQiNiu(DateUtils.parseDateToStr("YYYY/M/d", date),date);
}
private void syncQiNiu(String dateStr, Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
Date begin = calendar.getTime();
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,59);
calendar.set(Calendar.SECOND,59);
calendar.set(Calendar.MILLISECOND,999);
Date end = calendar.getTime();
List<SysUpload> todayData = uploadService.list(new LambdaQueryWrapper<SysUpload>()
.between(SysUpload::getCreateTime, begin, end));
Configuration cfg = new Configuration(Region.autoRegion());
Auth auth = Auth.create(ossKey, ossSecret);
BucketManager bucketManager = new BucketManager(auth,cfg);
BucketManager.FileListIterator it = bucketManager.createFileListIterator(ossBucketName, "upload/"+dateStr, 500, null);
while (it.hasNext()) {
List<SysUpload> listCache = new ArrayList<>();
FileInfo[] items = it.next();
if (items.length > 1) {
for (FileInfo item : items) {
SysUpload sysUpload = new SysUpload();
String[] split = item.key.split("/");
sysUpload.setFileName(split[split.length-1]);
sysUpload.setOriginalName(split[split.length-1]);
sysUpload.setFilePath(ossUploadPath+"/"+item.key);
sysUpload.setUrl(ossUploadPath+"/"+item.key);
String[] type = item.mimeType.split("/");
sysUpload.setMimeType(type[type.length-1]);
String putTimeStr = String.valueOf(item.putTime);
// 时间戳13位,毫秒级
putTimeStr = putTimeStr.substring(0,13);
sysUpload.setCreateBy("admin");
sysUpload.setCreateTime(new Date(Long.parseLong(putTimeStr)));
sysUpload.setUpdateBy("admin");
sysUpload.setUpdateTime(new Date());
listCache.add(sysUpload);
}
}
List<SysUpload> addList = new ArrayList<>();
if (todayData != null && !todayData.isEmpty() && !listCache.isEmpty()) {
for (SysUpload sysUpload : listCache) {
boolean exist = false;
for (SysUpload todayDatum : todayData) {
if (todayDatum.getUrl().equals(sysUpload.getUrl())) {
exist = true;
break;
}
}
if (!exist) {
addList.add(sysUpload);
}
}
}
uploadService.saveBatch(addList);
}
}