我用 Vue + SpringBoot + Redis 写了个「文件快取柜」

✨ 项目亮点

  • 🔐 取件码机制:上传后生成 6 位取件码,接收方输入即可下载,下载后文件立即失效
  • ⏳ 自动清理:文件最长保留 7 天,过期自动删除,节省存储空间
  • 🚀 高效快速:基于 Redis 缓存临时信息,文件存储采用本地或云存储
  • 🧑‍💻 前后端分离:Vue3 + SpringBoot,接口清晰,易于二次开发
  • 📱 完全匿名:无需注册登录,即传即走,保护隐私

🖼️ 界面预览(部分截图)

上传页面

🛠️ 技术栈

前端:Vue3 + Axios

后端:SpringBoot + Spring Security(可选)

缓存与存储:Redis + 本地存储(可扩展至OSS/S3)

部署:jar + Nginx

📦 功能列表

文件上传,生成唯一取件码

取件码输入提取文件,支持一次性下载

文件过期自动清理机制

上传历史记录查看与管理

支持拖拽上传、多文件格式

🧠 项目初衷

在日常工作和生活中,我们常常遇到这样几个痛点:

临时文件分享麻烦

比如想发一个文件给同事,用网盘要登录、要下载客户端,对方下载还可能限速。我们只是想"传完即走",不需要长期存储。

隐私文件不想留痕

比如去打印店打印简历或合同,用U盘怕中毒,用微信传又怕文件留在打印店电脑上。希望能"打印完即销毁"。

单向收文件场景缺失

比如老师收作业、活动收集材料,传统方式是建群或发邮箱,文件散乱难管理,还涉及隐私泄露风险。

📂 开源地址

项目已在 GitHub 开源,欢迎 Star ⭐、Fork 和 PR!

https://github.com/Jarrettluo/quick-box-web

https://github.com/Jarrettluo/quick-box-server

🧱 技术难点解析

1. 大文件分片上传

  • 为了支持超大文件(如视频、设计稿)上传,我实现了 前端分片 + 后端合并 机制:

  • 前端将文件切分为多个片段(如 5MB/片)

  • 并行上传分片,提升上传稳定性与速度

  • 后端接收后按顺序合并为原文件,保证完整性

2. 取件码生成与时效管理

  • 取件码采用 6位字母数字组合,具备唯一性与易读性

  • 使用 Redis 存储取件码与文件映射,设置 7 天自动过期

  • 下载后立即删除 Redis 记录,实现"一次下载即失效"

3. 后续扩展规划(欢迎参与!)

  • 短信验证码提取:增加安全层,防止取件码泄露风险

  • 文件夹上传与打包下载:支持批量文件处理

  • 对象存储接入:可对接阿里云OSS、腾讯云COS等,扩展存储能力

  • API 开放接口:方便第三方系统集成

🤝 参与贡献

  • 如果你对这个项目感兴趣,欢迎:

  • 提交 Issue 反馈问题

  • 发起 Pull Request 改进功能

  • 分享使用体验或部署教程

相关推荐
yume_sibai2 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
步行cgn2 小时前
YAML 的语法规则
spring boot·后端
骇客野人2 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
wxwx_bscxy3223 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
摇滚侠6 小时前
《SpringBoot 3:入门与应用实战》第 9 章 跨域问题 阅读笔记 27
spring boot·笔记·okhttp
weixin_4225554210 小时前
el-menu子菜单点击就被激活,恢复之前的激活状态
javascript·vue.js·elementui
苏生Susheng10 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
JavaPub-rodert11 小时前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
honkun613 小时前
vue 表格组件 vxe-table 实现拖拽列字段自动生成透视表汇总
前端·javascript·vue.js