一个基于 HDFS 的网盘系统,提供文件上传、下载、在线预览等功能。
- 文件上传(支持大文件)
- 文件下载
- 创建文件夹
- 删除文件/文件夹
- 文件列表展示
- 文件大小显示
- 文件类型区分(文件/文件夹)
- 上传进度显示
- 文件软删除(移入回收站)
- 回收站文件列表
- 回收站文件还原
- 文件永久删除
- 显示文件原始路径
- 文件秒传(基于文件哈希)
- 大文件分块上传
- 文件元数据缓存
- Spring Boot 2.3.9
- Spring Data JPA
- Hadoop 3.3.1
- MySQL 8.0
- Vue 3
- Element Plus
- Axios
- Vite
- JDK 8+
- Node.js 14+
- MySQL 8.0+
- Hadoop 3.x
确保 HDFS 服务正常运行,并记录 NameNode 的地址和端口。
在 MySQL 中创建数据库:
CREATE DATABASE netdisk DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;修改 backend/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/netdisk?useSSL=false&serverTimezone=UTC
username: netdisk
password: netdisk
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.MySQL8Dialect
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
format_sql: true
hdfs:
uri: hdfs://netdisk:8020
username: hdfs修改 frontend/.env.development:
VITE_API_URL=http://localhost:8080cd backend
./mvnw spring-boot:runcd frontend
npm install
npm run dev- GET
/api/file/list?path=/ - 参数:path - 文件路径
- 返回:文件列表数组
- POST
/api/file/upload - 参数:
- file: 文件数据(multipart/form-data)
- path: 上传路径(query)
- 返回:上传后的文件路径
- GET
/api/file/download/{id} - 参数:id - 文件ID
- 返回:文件流
- POST
/api/file/createFolder - 参数:
- path: 父目录路径
- folderName: 文件夹名称
- 返回:成功/失败状态
- DELETE
/api/file/{id} - 参数:id - 文件ID
- 返回:成功/失败状态
- GET
/api/file/rubbish - 返回:回收站文件列表
- POST
/api/file/{id}/restore - 参数:id - 文件ID
- 返回:成功/失败状态
- DELETE
/api/file/{id}/permanent - 参数:id - 文件ID
- 返回:成功/失败状态
- 点击"上传文件"按钮选择文件
- 支持拖拽上传
- 上传过程中显示进度条
- 上传完成后自动刷新文件列表
- 点击文件行的"下载"按钮
- 浏览器会自动开始下载
- 点击"新建文件夹"创建目录
- 点击文件夹名称进入该目录
- 使用面包屑导航返回上级目录
- 点击"删除"按钮将文件移入回收站
- 在回收站中可以还原或永久删除文件
- 永久删除的文件无法恢复
- 显示所有已删除的文件
- 可以还原文件到原始位置
- 可以永久删除文件
-
文件上传
- 默认最大支持 100MB 的文件
- 文件名不要包含特殊字符
- 上传时保持网络稳定
-
文件下载
- 下载大文件时请耐心等待
- 确保有足够的本地存储空间
-
回收站
- 文件在回收站保留 30 天
- 永久删除后无法恢复
- 还原时原路径必须可用
-
上传失败
- 检查文件大小是否超限
- 检查存储空间是否充足
- 检查网络连接是否稳定
-
下载失败
- 确认文件是否存在
- 检查网络连接
- 确保本地有足够空间
-
文件列表加载失败
- 刷新页面重试
- 检查网络连接
- 确认服务器状态
- 添加用户认证和权限管理
- 支持文件分享功能
- 添加文件预览功能
- 支持文件夹打包下载
- 实现文件搜索功能
- 添加文件版本控制
- 优化大文件传输性能
MIT License
