一个简洁、安全的临时文件分享平台。无需注册,上传即分享。

weisijie b3187c0e02 1. 修复了 deploy.bat 在 Windows cmd 执行时的中文乱码问题,脚本开头新增 chcp 65001 >nul 切换到 UTF-8 代码页,同步将换行符由 LF 转换为 CRLF; 2 ماه پیش
.github 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
backend 2f95754ffc 1. 实现了Canvas粒子系统星空动态背景(StarField.vue),支持多色发光星星、鼠标吸引力、星星间引力/斥力双力模型、近距离连线效果、闪烁动画和prefers-reduced-motion无障碍适配;采用离屏Canvas预渲染光晕、帧率限制~30fps、批量连线绘制等性能优化手段,在视觉效果与流畅度之间取得平衡; 2 ماه پیش
frontend dfb3682790 1. 更新了网页标签页配置:将favicon图标替换为public/icon.png,网页标题修改为“文件文本分享服务”;同步修复Home路由meta.title,避免运行时被路由守卫覆盖HTML标题; 2 ماه پیش
.gitattributes b3187c0e02 1. 修复了 deploy.bat 在 Windows cmd 执行时的中文乱码问题,脚本开头新增 chcp 65001 >nul 切换到 UTF-8 代码页,同步将换行符由 LF 转换为 CRLF; 2 ماه پیش
.gitignore dfb3682790 1. 更新了网页标签页配置:将favicon图标替换为public/icon.png,网页标题修改为“文件文本分享服务”;同步修复Home路由meta.title,避免运行时被路由守卫覆盖HTML标题; 2 ماه پیش
CLAUDE.md 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
CONTRIBUTING.md 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
LICENSE 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
README.md 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
deploy.bat b3187c0e02 1. 修复了 deploy.bat 在 Windows cmd 执行时的中文乱码问题,脚本开头新增 chcp 65001 >nul 切换到 UTF-8 代码页,同步将换行符由 LF 转换为 CRLF; 2 ماه پیش
deploy.sh 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش
prompt.txt b3187c0e02 1. 修复了 deploy.bat 在 Windows cmd 执行时的中文乱码问题,脚本开头新增 chcp 65001 >nul 切换到 UTF-8 代码页,同步将换行符由 LF 转换为 CRLF; 2 ماه پیش
snapshot-prompts.txt 25b999ef84 1. 实现了临时文件分享平台,支持多文件上传和一键打包下载;2. 实现了文本内容分享功能,支持纯文本、Markdown渲染、代码高亮和JSON格式化四种展示模式;3. 实现了灵活的过期策略,支持1小时至7天或永不过期,可自定义下载次数限制;4. 实现了密码保护机制,使用SHA-256哈希存储访问密码;5. 实现了ID前缀智能匹配功能,基于字典树算法输入前几位即可自动跳转到目标分享;6. 实现了双数据库支持,通过Spring Profile一键切换SQLite(默认零配置)和MySQL;7. 实现了后端驱动的前端配置机制,文件大小和数量限制统一在后端管理,前端启动时自动获取;8. 实现了过期内容自动清理,定时扫描并级联删除关联文件、文本和字典树节点;9. 实现了一体化部署方案,前端构建产物打包进后端JAR,单进程运行于7626端口;10. 实现了银河星空动态背景UI和响应式布局,分享页支持文本一键复制到剪贴板;11. 新增了配置模板文件(.example)机制,敏感信息通过.gitignore排除,符合开源项目规范;12. 新增了Windows和Linux一体化部署脚本、数据库初始化脚本及完整的RESTful API文档。 2 ماه پیش

README.md

Snapshot

一个简洁、安全的临时文件分享平台。无需注册,上传即分享。

特性

  • 文件上传 — 支持多文件上传,单文件最大 500MB,最多 10 个文件
  • 文本分享 — 支持纯文本、Markdown、代码、JSON 四种格式,代码高亮显示
  • 灵活过期 — 1 小时 ~ 7 天,或永不过期;自定义下载次数限制
  • 密码保护 — 可选访问密码,SHA-256 哈希存储
  • ID 前缀匹配 — 输入 ID 前几位即可自动跳转(字典树算法)
  • 打包下载 — 一键 ZIP 打包下载所有文件
  • 自动清理 — 定时清理过期内容,释放存储空间
  • 双数据库 — SQLite(零配置开箱即用)/ MySQL 一键切换
  • 一体化部署 — 前端打包进后端 JAR,单进程运行
  • 后端驱动配置 — 文件大小、数量限制统一在后端配置,前端自动获取

技术栈

层级 技术
前端 Vue 3.3 + Vue Router 4 + Pinia + Axios
后端 Spring Boot 2.7.18 + MyBatis + JPA + Java 17
数据库 SQLite(默认)/ MySQL 8.0+
构建 Maven + npm

快速开始

环境要求

  • Java 17+
  • Maven 3.6+
  • Node.js 16+ / npm 8+(仅开发或一体化部署时需要)

一体化部署(推荐)

  1. 复制配置模板并按需修改:

    cd backend/src/main/resources
    cp application.properties.example application.properties
    # 如需 MySQL,还需:
    cp application-mysql.properties.example application-mysql.properties
    # 编辑 application-mysql.properties 填入数据库密码
    
  2. 构建并启动:

Windows:

deploy.bat

Linux / macOS:

chmod +x deploy.sh && ./deploy.sh

构建完成后启动:

cd backend
java -jar target/snapshot-backend-1.0.0.jar

访问 http://localhost:7626 即可使用。

首次启动默认使用 SQLite,无需安装任何数据库。

数据库配置

项目通过 Spring Profile 切换数据库,配置位于 backend/src/main/resources/application.properties

# 使用 SQLite(默认,零配置)
spring.profiles.active=dev,sqlite

# 使用 MySQL
# spring.profiles.active=dev,mysql

SQLite(默认)

无需任何额外配置,启动时自动在 data/ 目录创建数据库文件。适合个人使用或轻量部署。

MySQL

  1. 创建数据库:

    mysql -uroot -p < backend/src/main/resources/sql/create.sql
    
  2. 修改 application-mysql.properties 中的数据库连接信息:

    spring.datasource.url=jdbc:mysql://localhost:3306/snapshot?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=your_password
    
  3. 切换 Profile 为 dev,mysql

项目结构

snapshot/
├── backend/                          # Spring Boot 后端
│   ├── src/main/java/com/snapshot/
│   │   ├── config/                   # 配置(CORS、SQLite方言、MyBatis、数据库初始化)
│   │   ├── controller/               # REST 控制器
│   │   ├── dto/                      # 数据传输对象
│   │   ├── entity/                   # JPA 实体类
│   │   ├── exception/                # 全局异常处理
│   │   ├── mapper/                   # MyBatis Mapper 接口
│   │   ├── repository/               # JPA Repository
│   │   ├── service/                  # 业务逻辑
│   │   └── util/                     # 工具类(ID生成、密码哈希)
│   ├── src/main/resources/
│   │   ├── mapper/                   # MyBatis XML 映射
│   │   ├── sql/                      # 数据库初始化脚本
│   │   ├── static/                   # 前端构建产物(一体化部署)
│   │   ├── application.properties            # 主配置
│   │   ├── application-mysql.properties      # MySQL 配置
│   │   └── application-sqlite.properties     # SQLite 配置
│   └── pom.xml
│
├── frontend/                         # Vue 3 前端
│   ├── src/
│   │   ├── api/                      # API 接口封装
│   │   ├── components/               # 组件(Markdown渲染、代码高亮、Toast)
│   │   ├── router/                   # 路由配置
│   │   ├── stores/                   # Pinia 状态管理
│   │   ├── styles/                   # 全局样式
│   │   ├── views/                    # 页面(Home、Share、NotFound)
│   │   ├── config.js                 # 前端配置(启动时从后端获取)
│   │   └── main.js
│   └── package.json
│
├── api/
│   └── API_DOCUMENT.md               # RESTful API 接口文档
└── deploy.bat / deploy.sh            # 一体化部署脚本

API 概览

完整接口文档请参考 API_DOCUMENT.md

分类 方法 端点 说明
配置 GET /api/config 获取前端配置
上传 POST /api/upload 创建上传记录
上传 POST /api/upload/{id}/files 上传文件
上传 GET /api/upload/{id} 获取上传详情
上传 DELETE /api/upload/{id} 删除上传记录
上传 GET /api/upload/resolve/{prefix} 前缀解析ID
分享 GET /api/share/{id} 访问分享内容
分享 POST /api/share/{id}/verify 密码验证
分享 GET /api/share/{id}/file/{fileId} 下载单个文件
分享 GET /api/share/{id}/download-all ZIP打包下载

配置说明

所有核心配置集中在 application.properties,前端在启动时通过 /api/config 自动获取:

# 服务端口
server.port=7626

# 文件限制(前端自动读取)
app.file.max-size=524288000          # 单文件最大 500MB
app.file.max-count=10                # 最多 10 个文件

# 存储路径
app.file.upload-dir=./uploads

# ID生成
app.id.length=8
app.id.charset=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

# 过期清理(每2小时)
app.cleanup.cron=0 0 */2 * * ?
app.cleanup.enabled=true

修改配置后重启后端即可生效,无需重新构建前端。

安全设计

  • 密码哈希 — SHA-256 存储密码,不保存明文
  • SQL 注入防护 — JPA 参数化查询
  • XSS 防护 — Vue 自动转义 + DOMPurify 清理 Markdown 输出
  • CORS 限制 — 可配置允许的跨域来源
  • 文件隔离 — 上传文件存储在 Web 根目录外
  • 自动清理 — 过期内容和物理文件定时删除

文档

许可证

MIT License