# 网盘_云盘-星云网盘 **Repository Path**: sun521xiaolei/FCloud ## Basic Information - **Project Name**: 网盘_云盘-星云网盘 - **Description**: 星云项目-子项目-FCloud网盘,一个web端的云盘,文件分析重,更加节约磁盘空间,支持cdn外链,支持开发做文件服务器。 - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: https://99xc.vip - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 23 - **Created**: 2021-11-05 - **Last Updated**: 2021-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 星云项目(星云计划)简介 1. 星云项目(星云计划),该计划的目的是让每一个开发者专注于新功能,新业务,新技术的研究与开发,不需要再去关注已经实现了的功能的实现。 2. 本项目是以开放平台的理念作为设计理念,以接口为交互方式实现系统与系统之间交互。 3. 本项目采用单点登录的方式登录,一个账号登录所有系统。 4. 希望加入星云计划的项目能向漫天星辰一样遍布星空。 #### 简介 一个简单的的云盘,拥有和百度云一样的文件存储,分享等功能,该网盘还支持文件cdn引用,及签名做文件服务器 - 拥有开放接口可做文件服务器 - 拥有去冗余功能,一个文件服务器只有一份数据,更好的节省了服务器硬盘空间 - 支持文件分片上传,支持操大文件上传,支持多服务器存储文件 - 自动分析硬盘大小,合理分配存储空间 - 本系统采用了前后端分离开发,前端使用的是`angular`,后端采用`java`实现 #### 功能介绍 * 个人资料:登录后可管理个人资料,删除,编辑,修改个人资料。 * 网盘管理:(创建/编辑)文件名称或文件夹名称,上传文件,打包文件,生成cdn地址等。 * 共享管理:分享文件给好友,音乐播放器,图片查看器,视频播放器,复制,移动,编辑 * 安全链接:本网盘可以生成cdn连接,该功能是为了防止盗链设计的 * 支持直接接入做文件服务器,cdn服务器 * 支持分段上传,分段下载。 #### 使用技术 * `angular` 前端核心框架 * `NG-ZORRO` 阿里的前端ui * `spark-md5` 前端md5加密工具,文件上传用到 * `spring-boot` 后端核心框架 * `spring-cloud-feign` 后端请求交互框架 * `mybatis-plus` 数据库操作框架 * `swagger2` 接口文档框架 * `thymeleaf` 模板引擎,登录注册等页面是单页面应用采用该框架实现 * `aliyun-java-sdk-core` 接入阿里云的发送短信 * `redis` 采用redis作为缓存数据库 * `mysql` 采用mysql作为数据储存数据库 #### 配置文件详解 使用本项目请先安装mysql数据库和redis数据库,并且修改`application-dev.yml` * 访问[BCloud](https://www.99xc.vip)登录注册,创建应用,导入`doc/导入数据`下面的基础数据; * 创建网页应用获取`appId`和`appSecret`; * 在数据管理中导入`doc/导入数据/`目录中的数据json(复制导入) ``` xc: name: file feign: basic: basic-server #基础服务名称,不必改 basicUrl: https://99xc.vip #基础服务地址,对应BCloud的地址 file: machineId: f001 #机器id,分布式使用 folderPaths: - path: e:/home/file #储存文件地址,必须配置 reserveSpace: 1073741824 #硬盘预留空间,单位直接,默认1GB #本机的地址 localUrl: http://127.0.0.1:8811 #本机的新地址,项目迁移时使用 localOldUrl: http://127.0.0.1:8811 #本机旧的地址,项目迁移时使用 tempFolder: path: e:/home/file/tempFile #零时文件目录 reserveSpace: 1073741824 #硬盘预留空间,单位直接,默认1GB aspect: openToken: true #开启token验证 openAuthority: true #是否开启权限,true:开启,false:不开启 appId: xc1832640470 #登录授权的应用id,BCloud申请获取 appSecret: #登录授权的应用秘钥,BCloud申请获取 ``` 请自行配置`redis`和`mysql`的地址 前端需要修改js配置(修改成`file-server`部署的地址) 前端,后端打包后该文件的位置在`/file-server/public`下有一个`config`开头的文件 前端未打包前端配置文件地址`/file-client/src/app/config/config.js` ``` const CONFIG = { // 开发环境 url: "", filePath: "http://127.0.0.1:8812", basicPath: "https://99xc.vip", loginUrl: "https://99xc.vip/oauth/login?appId=xc1832640470", redirectPath: "/#/login" }, CONFIG_PRO = { // 生产环境 url: "", filePath: "https://xy.99xc.vip:8812", basicPath: "https://99xc.vip", loginUrl: "https://99xc.vip/oauth/login?appId=xc1832640470", redirectPath: "/#/login" }; ``` #### 部署方式 - 在`an-admin`下面运行`npm i`初始化前端项目 - 完成后运行`npm run build`打包前端项目 - 运行maven的package打包命令打包即可 - 生成一个`file-server.zip`在linux解压运行`start.sh`命令启动 #### 签名说明 - 签名的字段按26个字母的顺序排序, - 然后转换成json拼接上appSecret秘钥 - 使用md5加密字符串 - 签名必须是字符串 #### 演示地址 * 演示服务器带宽比较小,访问会比较慢 * 我们的演示环境也是可以用的正式环境,部分功能可能无法开放,请在图片展示中查看 * 点击链接访问[星云网盘](https://www.99xc.vip) [星云网盘](https://www.99xc.vip) 账号:test 密码:123456 账号:test1 密码:123456 ### 使用文档/开放接口文档 [星云文档](https://www.99xc.vip/show/doc) #### 接口文档 * 接口文档启动后访问`/swagger-ui.html`查看(只有在开发时才可以访问) * 开放接口文档`doc/开放接口文档.md` #### 版本信息 访问目录下的`VERSION.md`文件 #### 联系方式 1. 技术交流讨论群:887216693 2. 如果发现项目中有bug请加群反馈,我们将第一时间修复bug。 3. 有问题请加群询问群主或管理员,我们承诺一定在第一时间回复你。 4. 我们也支持定制版本开发,如有需要请联系我们。 3. 星云项目官网:[点击跳转](https://www.99xc.vip) 4. 由于本人没什么设计天赋,在ui方面做的还不足,如有愿意为开源事业做贡献的ui设计师,可以联系我们,谢谢。 ## 星云网盘使用文档 [开放接口文档](https://99xc.vip/show/f_cloud_interface_doc) ### 登录 * 登录页面采用单点登录支持,密码登录,手机登录,邮箱登录。 * 下面显示的是当前登录系统需要获取用户在其他系统的数据权限。 ![登陆页面](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144146611.png "登陆页面") ### 注册 * 注册,提供了两种注册方式,手机注册,邮箱注册。 ![注册页面](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144155654.png "注册页面") ### 找回密码 * 找回密码提供两种方式,手机找回,邮箱找回。 ![找回密码](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144152831.png "找回密码") ### 首页 * 首页展示的有,网盘空间,网盘已使用空间,网盘的Cdn流量。 * Cdn流量是开发者通过开放下载接口(开发下载接口是在调用开放上传接口后返回的url访问接口,该接口在接口文档里面不存在)或生成Cdn链接下载文件是使用的流量信息,如果流量不够可向网盘管理员申请添加流量,每下载一个文件会使用掉一个文件大小的Cdn流量。 ![首页](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144164052.png "首页") ### 头像菜单 * 点击头像出现我的头像菜单。 ![头像菜单](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144161150.png "头像菜单") ### 我的资料 * 该页面可以设置邮箱,设置手机号,修改/设置基础资料。 ![我的资料](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144166252.png "我的资料") ### 修改密码/设置密码 * 如果你是手机号或邮箱直接登录,第一次该功能会是设置密码。之后就是修改密码。 ![修改密码](https://xy.99xc.vip:8812/open/download/1/BCloud/1/app/doc/file/202102182144173629.png "修改密码") ### 退出登录 * 点击退出登录,直接返回登录页面,退出登录后文件下载地址也将不能使用。 ### 云盘管理【菜单】 * 本网盘支持同一账户组,编辑,删除,修改,复制文件。 * 按文件名搜索只支持搜索当前目录下的文件及目录。 * 点击目录上的计算可以计算文件夹的大小。 * 点击文件,文件是mp4格式会打开播放视屏,如果文件是mp3格式会打开音乐播放器,如果图片个是会打开图片查看器。 ![云盘管理](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182151349258.png "云盘管理") ### 云盘管理操作 * 创建文件夹:新建一个文件夹。 * 上传文件:浏览器上支持上传多个文件。 * 上传文件夹:浏览器上致辞。 * 音乐播放器:该功能只会播放一个目录下的音乐,进入目录就会将目录中的mp3后缀的文件读到播放列表。 * 分享:必须选中目录或文件,支持多选,分享后会生成访问地址和提取码(选择需要提取码才会生成提取码,与百度网盘功能相似),分享时也可设置分享有效期。 * 复制:必须选中目录或文件,支持多选,复制时会弹出目录可以选择复制到某个目录,同一个账户组可以复制,复制以后文件会成为上级目录所属用户的文件。 * 移动:必须选中目录或文件,支持多选,移动时会弹出目录可以选择移动到某个目录,同一个账户组不能相互移动。 * 打包:必须选中目录或文件,支持多选,会将选中的多个文件或文件夹打包成一个zip的压缩包。该压缩包会占用网盘空间,空间不足是无法打包的。 * 删除:必须选中目录或文件,支持多选,批量删除文件或文件夹。 ![云盘管理操作](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182152059220.png "云盘管理操作") ### 云盘管理文件夹操作 * 编辑:修改文件夹名称。 * 删除:删除单个文件夹。' ![云盘管理文件夹操作](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182152543996.png "云盘管理文件夹操作") ### 云盘管理文件操作 * 编辑:修改文件夹名称。 * 删除:删除单个文件夹。 * Cdn:生成Cdn地址,如需使用该功能,请先查阅文件理解Cdn的概念。 * 下载:点击后下载文件。 ![云盘管理文件操作](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182153285888.png "云盘管理文件操作") ### 共享文件【菜单】 * 可以查看已经共享的文件。 * 可以取消共享的文件。 ![共享文件](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182154172428.png "共享文件") ### 安全链接【菜单】 * 该功能适合开发者,或者动放盗链技术的人员使用 * 安全链接是为了防止盗链。 * 安全链接只对Cdn链接和开放下载接口(开发下载接口是在调用开放上传接口后返回的url访问接口,该接口在接口文档里面不存在)有效。 ![安全链接](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182155379416.png "安全链接") ### 安全链接创建/编辑 * 目录,选择要对外开放的文件目录 * url,如果将生成的地址嵌入页面,url对应的就是Referer,url设置为`/**`代表给文件目录下的文件可以直接访问,如果不是`/**`请求文件是请求头必须带Referer,Referer的地址必须是允许范围。 * `/*` 代表对比时可以将url地址`/`与`/`之间的忽略。 * `/**` 只对比`/**`前面的url地址,后面的全部忽略。 ![安全链接创建](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182156159621.png "安全链接创建") ### 共享目录 * 可以计算共享文件夹大小。 * 可以搜索共享文件/文件夹,同目录搜索。 * 可以打开图片,视频,音乐文件,点击文件直接打开。 ![共享目录](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182157452412.png "共享目录") ### 共享目录操作 * 可以直接跳转到首页。 * 登录账号与分享账号不相同时,会出现保存到网盘选项想,演示时可以用test分享test1查看,支持多选。 * 没有登录该操作只有登录按钮,点击登录,登录后会跳回当前页面。 * 可以直接退出登录。 ![共享目录操作](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182158312747.png "共享目录操作") ### 共享目录文件操作 * 可以直接跳转到首页。 * 登录账号与分享账号不相同时,会出现保存到网盘选项想,演示时可以用test分享test1查看,支持多选。 * 没有登录该操作只有登录按钮,点击登录,登录后会跳回当前页面。 * 可以直接退出登录。 ![共享目录文件操作](https://xy.99xc.vip:8812/open/download/1/BCloud/1/appDoc/file/202102182159065820.png "共享目录文件操作")