zfile-dev / zfile-dev/zfile

feat: 支持为当前浏览的目录生成索引文件

Open
#315 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
10.8k
Forks
2k
PR merge metrics
No merged PRs in 30d

Description

功能描述

能够对当前浏览的目录向下生成包含所有文件名的一个索引文件.

功能用途

由于当前搜索支持计划的发展路线在未来可能会让一些储存策略无法使用搜索功能, 所以建议能够手动生成这样的目录索引:

zfile-master
│  1.txt
│  
└─zfile-master
    │  .gitignore
    │  API.md
    │  LICENSE
    │  pom.xml
    │  README.md
    │  
    ├─.github
    │  └─ISSUE_TEMPLATE
    │          bug_report.md
    │          feature_request.md
    │          question.md
    │          
    └─src
        └─main
            ├─java
            │  └─im
            │      └─zhaojun
            │          └─zfile
            │              │  ZfileApplication.java
            │              │  
            │              ├─aspect
            │              │      FileListCacheAspect.java
            │              │      
            │              ├─cache
            │              │      DriveCacheKey.java
            │              │      MyTimedCache.java
            │              │      ZFileCache.java
            │              │      
            │              ├─config
            │              │      OneDriveConfig.java
            │              │      SaTokenConfigure.java
            │              │      WebMvcConfig.java
            │              │      ZFileConfiguration.java
            │              │      
            │              ├─context
            │              │      DriveContext.java
            │              │      StorageTypeContext.java
            │              │      
            │              ├─controller
            │              │  ├─admin
            │              │  │      AdminController.java
            │              │  │      CacheController.java
            │              │  │      DebugController.java
            │              │  │      DriveController.java
            │              │  │      LogController.java
            │              │  │      LoginController.java
            │              │  │      MateDataController.java
            │              │  │      ShortLinkManagerController.java
            │              │  │      
            │              │  ├─home
            │              │  │      DirectLinkController.java
            │              │  │      FileController.java
            │              │  │      FileParseController.java
            │              │  │      LocalController.java
            │              │  │      ShortLinkController.java
            │              │  │      
            │              │  ├─install
            │              │  │      InstallController.java
            │              │  │      
            │              │  └─onedrive
            │              │          OneDriveCallbackController.java
            │              │          SharePointHelperController.java
            │              │          
            │              ├─exception
            │              │      GlobleExceptionHandler.java
            │              │      InitializeDriveException.java
            │              │      InvalidDriveException.java
            │              │      InvalidShortLinkException.java
            │              │      NotAllowedDownloadException.java
            │              │      NotEnabledDriveException.java
            │              │      NotExistFileException.java
            │              │      PasswordVerifyException.java
            │              │      PreviewException.java
            │              │      RefreshCacheException.java
            │              │      StorageStrategyUninitializedException.java
            │              │      TextParseException.java
            │              │      
            │              ├─filter
            │              │      CorsFilter.java
            │              │      NotFoundFilter.java
            │              │      
            │              ├─model
            │              │  ├─constant
            │              │  │      LocalFileResponseTypeConstant.java
            │              │  │      StorageConfigConstant.java
            │              │  │      SystemConfigConstant.java
            │              │  │      ZFileConstant.java
            │              │  │      
            │              │  ├─dto
            │              │  │      AudioInfoDTO.java
            │              │  │      CacheInfoDTO.java
            │              │  │      DriveConfigDTO.java
            │              │  │      DriveListDTO.java
            │              │  │      FileItemDTO.java
            │              │  │      FileListDTO.java
            │              │  │      SharePointInfoVO.java
            │              │  │      StorageStrategyConfig.java
            │              │  │      StorageStrategyDTO.java
            │              │  │      SystemConfigDTO.java
            │              │  │      SystemFrontConfigDTO.java
            │              │  │      
            │              │  ├─entity
            │              │  │      DriveConfig.java
            │              │  │      FilterConfig.java
            │              │  │      ShortLinkConfig.java
            │              │  │      StorageConfig.java
            │              │  │      SystemConfig.java
            │              │  │      
            │              │  ├─enums
            │              │  │      FileTypeEnum.java
            │              │  │      StorageTypeEnum.java
            │              │  │      StorageTypeEnumConvert.java
            │              │  │      StorageTypeEnumDeSerializerConvert.java
            │              │  │      StorageTypeEnumJsonDeSerializerConvert.java
            │              │  │      StorageTypeEnumSerializerConvert.java
            │              │  │      
            │              │  └─support
            │              │          FilePageModel.java
            │              │          OneDriveToken.java
            │              │          ResultBean.java
            │              │          VerifyResult.java
            │              │          
            │              ├─repository
            │              │      DriverConfigRepository.java
            │              │      FilterConfigRepository.java
            │              │      ShortLinkConfigRepository.java
            │              │      StorageConfigRepository.java
            │              │      SystemConfigRepository.java
            │              │      
            │              ├─schedule
            │              │      OneDriveTokenRefreshSchedule.java
            │              │      
            │              ├─service
            │              │  │  DriveConfigService.java
            │              │  │  FilterConfigService.java
            │              │  │  ShortLinkConfigService.java
            │              │  │  StorageConfigService.java
            │              │  │  SystemConfigService.java
            │              │  │  
            │              │  ├─base
            │              │  │      AbstractBaseFileService.java
            │              │  │      AbstractOneDriveServiceBase.java
            │              │  │      AbstractS3BaseFileService.java
            │              │  │      AbstractSharePointServiceBase.java
            │              │  │      BaseFileService.java
            │              │  │      MicrosoftDriveServiceBase.java
            │              │  │      
            │              │  └─impl
            │              │          AliyunServiceImpl.java
            │              │          FtpServiceImpl.java
            │              │          HuaweiServiceImpl.java
            │              │          LocalServiceImpl.java
            │              │          MinIOServiceImpl.java
            │              │          OneDriveChinaServiceImpl.java
            │              │          OneDriveServiceImpl.java
            │              │          QiniuServiceImpl.java
            │              │          S3ServiceImpl.java
            │              │          SharePointChinaServiceImpl.java
            │              │          SharePointServiceImpl.java
            │              │          TencentServiceImpl.java
            │              │          UFileServiceImpl.java
            │              │          UpYunServiceImpl.java
            │              │          
            │              └─util
            │                      AudioUtil.java
            │                      FileComparator.java
            │                      FileUtil.java
            │                      HttpUtil.java
            │                      NaturalOrderComparator.java
            │                      SpringContextHolder.java
            │                      StartupListener.java
            │                      StringUtils.java
            │                      
            └─resources
                │  application.yml
                │  banner.txt
                │  logback-spring.xml
                │  rebel.xml
                │  
                ├─db
                │      data.sql
                │      
                ├─META-INF
                │      additional-spring-configuration-metadata.json
                │      
                ├─static
                │  │  editor.worker.js
                │  │  favicon.ico
                │  │  index.html
                │  │  zfile.config.json
                │  │  
                │  ├─css
                │  │      admin.da89697f.css
                │  │      admin~front.630e4aa3.css
                │  │      app.89e722fc.css
                │  │      chunk-vendors.74b40c55.css
                │  │      front-audio.67db92c1.css
                │  │      front-text.dad0723a.css
                │  │      front-video.fb7331d8.css
                │  │      front.b46debaa.css
                │  │      install.19dbd4e6.css
                │  │      monaco-editor.0dbdf587.css
                │  │      
                │  ├─fonts
                │  │      element-icons.535877f5.woff
                │  │      element-icons.732389de.ttf
                │  │      
                │  ├─img
                │  │      icon-ext.ba81b24c.png
                │  │      icon.551539f8.png
                │  │      iconfont.573255ce.svg
                │  │      loading-0.a72011cc.gif
                │  │      
                │  └─js
                │          admin.min.js
                │          admin~front.min.js
                │          app.js
                │          chunk-2d0a43df.min.js
                │          chunk-2d0e57ec.min.js
                │          chunk-vendors.min.js
                │          front-audio.min.js
                │          front-text.min.js
                │          front-video.min.js
                │          front.min.js
                │          install.min.js
                │          monaco-editor.min.js
                │          
                └─templates
                        callback.html

如果不支持直接搜索的可以为目录生成索引文件后使用浏览器内的搜索.

如果有可能支持, 可以与目录密码一样的, 使用指定的文件为目录配置并开启这个功能, 与缓存的刷新时间一样定时过期索引文件.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading FileController.java and the file-service entry points in BaseFileService.java, then trace how the current directory listing is produced. Define the index format, supported storage strategies, configuration and expiration behavior before implementation; done means a browsed directory can generate an index that supports browser search.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring-boot
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.