七牛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);
        }
    }