Skip to content

dengdz/HDFS-NETDIST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HDFS 网盘系统

一个基于 HDFS 的网盘系统,提供文件上传、下载、在线预览等功能。

img.png

当前支持的功能

文件管理

  • 文件上传(支持大文件)
  • 文件下载
  • 创建文件夹
  • 删除文件/文件夹
  • 文件列表展示
  • 文件大小显示
  • 文件类型区分(文件/文件夹)
  • 上传进度显示

回收站功能

  • 文件软删除(移入回收站)
  • 回收站文件列表
  • 回收站文件还原
  • 文件永久删除
  • 显示文件原始路径

性能优化

  • 文件秒传(基于文件哈希)
  • 大文件分块上传
  • 文件元数据缓存

技术栈

后端

  • 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

快速开始

1. 配置 HDFS

确保 HDFS 服务正常运行,并记录 NameNode 的地址和端口。

2. 配置数据库

在 MySQL 中创建数据库:

CREATE DATABASE netdisk DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 修改配置文件

修改 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:8080

4. 启动后端服务

cd backend
./mvnw spring-boot:run

5. 启动前端服务

cd frontend
npm install
npm run dev

API 文档

文件操作

获取文件列表

  • 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
  • 返回:成功/失败状态

使用说明

1. 文件上传

  • 点击"上传文件"按钮选择文件
  • 支持拖拽上传
  • 上传过程中显示进度条
  • 上传完成后自动刷新文件列表

2. 文件下载

  • 点击文件行的"下载"按钮
  • 浏览器会自动开始下载

3. 文件夹操作

  • 点击"新建文件夹"创建目录
  • 点击文件夹名称进入该目录
  • 使用面包屑导航返回上级目录

4. 删除操作

  • 点击"删除"按钮将文件移入回收站
  • 在回收站中可以还原或永久删除文件
  • 永久删除的文件无法恢复

5. 回收站

  • 显示所有已删除的文件
  • 可以还原文件到原始位置
  • 可以永久删除文件

注意事项

  1. 文件上传

    • 默认最大支持 100MB 的文件
    • 文件名不要包含特殊字符
    • 上传时保持网络稳定
  2. 文件下载

    • 下载大文件时请耐心等待
    • 确保有足够的本地存储空间
  3. 回收站

    • 文件在回收站保留 30 天
    • 永久删除后无法恢复
    • 还原时原路径必须可用

常见问题

  1. 上传失败

    • 检查文件大小是否超限
    • 检查存储空间是否充足
    • 检查网络连接是否稳定
  2. 下载失败

    • 确认文件是否存在
    • 检查网络连接
    • 确保本地有足够空间
  3. 文件列表加载失败

    • 刷新页面重试
    • 检查网络连接
    • 确认服务器状态

开发计划

  • 添加用户认证和权限管理
  • 支持文件分享功能
  • 添加文件预览功能
  • 支持文件夹打包下载
  • 实现文件搜索功能
  • 添加文件版本控制
  • 优化大文件传输性能

许可证

MIT License

About

使用HDFS作为存储介质,实现简单的网盘的上传下载功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors