# tfiles **Repository Path**: tanoo/tfiles ## Basic Information - **Project Name**: tfiles - **Description**: 文件服务,快速聚合OSS存储功能 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-03-29 - **Last Updated**: 2025-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: file, minio, Java, amis ## README # 文件服务 快速聚合OSS存储功能 # 文档 接口文档地址: https://qnjmlsrvao.apifox.cn 管理端地址: http://127.0.0.1:8200/admin # 初始化 1. 启动项目后将 doc/sql/dict_ini.sql 在数据库中执行一遍 # 项目结构 1. file-api 提供RPC接口 2. file-sdk 提供oss操作能力 3. file-server 文件服务 # 分支说明 > 其他分支均废弃 但还是有sdk example 的价值 1. master : 主分支 切换成service版本的稳定部署版本 2. service : service服务的开发分支 # 分支取名规则 ## 修改Bug > bug问题-service ## 不同开发者同时开发不同功能点 > 人员名-service # 项目主要架构与功能说明 ## 功能架构 ![文件存储服务功能架构.jpg](doc/设计/文件存储服务功能架构.jpg) ## 项目结构 ![项目结构.jpg](doc/设计/项目结构.jpg) ## 文件操作设计 ![文件操作设计.jpg](doc/设计/文件操作设计.jpg) ## 新增功能的操作方法 1. 在 sdk 的 config 包里构建新存储器的配置信息对象 2. 在 sdk 的 core 包里构建具体操作功能 3. 在 server 的 init 包里初始化方式 4. 在 server 的 service/impl/FileOperateServiceImpl.java 里完成新功能的处理 5. 在 server 的 service/impl/FileStorageConfigServiceImpl.java 里对 add 和delete 做client cacha 追加和删除 6. 在 server 的 resources/templates/pages/config-new.json 里添加新的存储器新增结构 # 项目完成度 ## 完成度 - [x] 表阶段构建 - [x] 基础接口 - [x] 本地上传下载 - [x] minio上传下载 - [x] 七牛云本地上传下载 - [x] ftp本地上传下载 ## 预备开发 2. 阿里云的接入 3. 亚马逊云的接入 ## 后置开发(暂不 1. redis的缓存接入 # 注意事项 ## 本地上传的配置 1. `file_config` 新增或者修改时必须重启项目才会生效 ## ftp 需要新增一个特殊的接口 1. 接口请参照FileOperateApi#views > 接口名可以在配置信息 `FtpConfig#getUsePrefix()`里修改、 > 接口参数必须一样 `@PathVariable("storage") String storage, @RequestParam("filePath") String filePath, HttpServletResponse response` # nginx配置 ## jar不设置server.servlet.context-path ```nginx # 大小 client_max_body_size 500M; # nginx 直接访问 location / { proxy_pass http://192.168.0.15:8200; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # nginx 配置前缀 location /file-api/ { proxy_pass http://192.168.0.15:8200/; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` ## jar 设置server.servlet.context-path=file-api ```nginx # 大小 client_max_body_size 500M; # nginx 直接访问 location / { proxy_pass http://192.168.0.15:8200/file-api/; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # nginx 配置前缀 # location /file-api-test/ { 这个也可以 location /file-api/ { proxy_pass http://192.168.0.15:8200/file-api/; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ```