littlebot
Published on 2025-04-13 / 0 Visits
0

【源码】基于 React 和 Node.js 的网盘系统

项目简介

Netpan 是一个仿照百度网盘的全栈项目,前端采用 React 构建,后端基于 Node.js 开发。项目实现了登录、修改密码、更新头像、大文件切片上传、断点续传、批量删除文件、移动文件、递归删除文件、视频切割、在线预览等功能,同时对前端的 webpack 打包配置进行了优化。

项目的主要特性和功能

  1. 用户认证与设置:支持用户注册登录,能进行密码修改和头像更新操作。
  2. 文件管理:可进行文件的上传、下载、批量删除、移动和递归删除,支持大文件切片上传与断点续传。
  3. 文件预览:支持视频、音频、图片等多种类型文件的在线预览。
  4. 视频处理:用户可对视频文件进行切割操作。
  5. 管理员功能:管理员可管理用户信息,监控网盘使用情况,但目前管理员页面还未完善。

安装使用步骤

前提条件

用户已下载本项目的源码文件,且需要安装 Redis、MySQL 数据库和 FFmpeg 工具。

后端配置

  1. backend 目录下新建一个 npmrc 文件,内容如下: bash sharp_binary_host="https://npm.taobao.org/mirrors/sharp" sharp_libvips_binary_host="https://npm.taobao.org/mirrors/sharp-libvips"
  2. 用 nrm 切换 taobao 镜像源,也可自行切换镜像,然后执行 npm i 安装依赖。注意 redis 依赖包最好使用相同版本。
  3. 在 MySQL 数据库中执行以下建表语句: sql CREATE TABLE `email_code` ( `email` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '邮箱', `code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `status` tinyint(1) DEFAULT NULL COMMENT '0:未使用 1:已使用', PRIMARY KEY (`email`,`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; sql CREATE TABLE `file_info` ( `file_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件ID', `user_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID', `file_md5` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件MD5值', `file_pid` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件父级ID', `file_size` bigint DEFAULT NULL COMMENT '文件大小', `file_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件名', `file_cover` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件封面', `file_path` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件路径', `create_time` datetime DEFAULT NULL COMMENT '文件创建时间', `last_update_time` datetime DEFAULT NULL COMMENT '最后更新时间', `folder_type` tinyint(1) DEFAULT NULL COMMENT '0:文件 1:目录', `file_category` tinyint(1) DEFAULT NULL COMMENT '文件分类 1:视频 2:音频 3:图片 4:文档 5:其他', `file_type` tinyint(1) DEFAULT NULL COMMENT '1:视频 2:音频 3:图片 4:pdf 5:doc 6:excel 7:txt 8:code 9:zip 10:其他', `status` tinyint(1) DEFAULT NULL COMMENT '0:转码中 1:转码失败 2:转码成功', `recovery_time` datetime DEFAULT NULL COMMENT '进入回收站时间', `del_flag` tinyint(1) DEFAULT NULL COMMENT '标记删除 0:删除 1:回收站 2:正常', PRIMARY KEY (`file_id`,`user_id`), KEY `idx_create_time` (`create_time`) USING BTREE, KEY `idx_user_id` (`user_id`) USING BTREE, KEY `idx_md5` (`file_md5`) USING BTREE, KEY `idx_file_pid` (`file_pid`) USING BTREE, KEY `idx_del_flag` (`del_flag`) USING BTREE, KEY `idx_recover_time` (`recovery_time`) USING BTREE, KEY `dix_status` (`status`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文件信息'; sql CREATE TABLE `user_info` ( `user_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID', `username` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '昵称', `email` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮箱', `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码', `join_time` datetime DEFAULT NULL COMMENT '注册时间', `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', `status` tinyint(1) DEFAULT NULL COMMENT '0:禁用 1:启用', `use_space` bigint DEFAULT NULL COMMENT '使用空间单位 byte', `total_space` bigint DEFAULT NULL COMMENT '网盘总空间', `admin` bigint DEFAULT NULL COMMENT '是否为超级管理员账号 0:否 1:是', `avatar_path` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户上传的头像', `avatar_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户头像类型', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  4. 配置 qq 邮箱授权码用于发送验证码(可自行百度配置方法)。
  5. 若使用 Windows 环境,需更改 backend 后端部分中 .envconstants 里的磁盘路径。若使用虚拟机,建议配置稍高,避免上传大文件出现问题。

前端配置

安装前端依赖并运行前端项目。

启动服务

启动 Node.js 服务器,在浏览器中访问项目网址,即可使用 Netpan 网盘。

请注意,该项目涉及后端服务器和数据库的配置,需要一定的技术背景和经验才能完成安装和使用。使用过程中遇到问题,建议查阅相关文档。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】