项目地址

GitHub:https://github.com/qinghemuyu/utils/tree/main/TreeHouse

Demo:https://btbtbt.qinghe.ink/

支持快速部署,只需要有java环境+一个可以正常访问的mysql数据库即可三十秒部署成功。

介绍


# 树屋-QH 文件与文本分享服务

## 项目概述

树屋-QH是一个简单、安全、高效的文件与文本分享服务,允许用户上传文件或分享文本内容,并通过取件码进行访问。系统支持自定义取件码、访问次数限制和过期时间设置,为用户提供灵活的分享选项。

## 功能特点

### 核心功能

- **文件分享**:上传文件并获取取件码,支持最大10MB的文件上传
- **文本分享**:分享文本内容并获取取件码,支持最大2000字的文本
- **取件码获取**:通过取件码获取分享的文件或文本内容
- **自定义设置**:
  - 自定义取件码
  - 自定义访问次数限制
  - 自定义过期时间(包括永久有效选项)

### 安全特性

- 文件存储使用UUID命名,防止文件名冲突和猜测
- 支持访问次数限制,防止无限制访问
- 支持过期时间设置,确保敏感内容不会永久存在
- 自动清理过期或已达到最大获取次数的分享内容

## 技术架构

### 后端技术栈

- **框架**:Spring Boot
- **数据库**:MySQL 8
- **ORM**:Spring Data JPA
- **文件处理**:Spring Multipart

### 前端技术栈

- **UI框架**:Bootstrap 5
- **图标库**:Font Awesome 5
- **模板引擎**:Thymeleaf

### 数据模型

系统核心数据模型为`ShareItem`,包含以下主要字段:

- `id`:唯一标识符
- `code`:取件码,唯一
- `fileName`:文件名称(文件类型)
- `textContent`:文本内容(文本类型)
- `filePath`:文件存储路径(文件类型)
- `fileSize`:文件大小(文件类型)
- `type`:分享类型(FILE或TEXT)
- `remainingCount`:剩余获取次数
- `createdAt`:创建时间
- `expiresAt`:过期时间

## 使用说明

### 文件分享

1. 访问首页,点击"上传文件"按钮
2. 选择要上传的文件(最大10MB)
3. 可选:设置自定义取件码、过期时间和访问次数
4. 点击上传按钮
5. 获取生成的取件码

### 文本分享

1. 访问首页,点击"分享文本"按钮
2. 在文本框中输入要分享的内容(最大2000字)
3. 可选:设置自定义取件码、过期时间和访问次数
4. 点击分享按钮
5. 获取生成的取件码

### 获取分享内容

1. 访问首页,在取件码输入框中输入取件码
2. 点击获取按钮
3. 查看或下载分享的文件/文本内容

部署说明

一行命令足矣:

java -jar heartbeatQh-0.0.1-SNAPSHOT.jar --spring.datasource.url=jdbc:mysql://你的数据库地址 --spring.datasource.username=数据库用户名 --spring.datasource.password=数据库密码 --server.port=服务端口

示例:

java -jar heartbeatQh-0.0.1-SNAPSHOT.jar --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/treehouse --spring.datasource.username=root --spring.datasource.password=root --server.port=9090