这是一个Windows页面风格的个人网盘,支持普通文本、文档、表格、xmind等在线编辑,支持Windows的小组件,例如计算器、WhiteBoard、python 等,其他更多功能待你来发现,也待你来开发。

为什么要做这个网盘?因为现在的商用网盘收费太高,个人文件存在别人的服务器上也不安全。而现在一些开源的个人网盘,例如NextDown、可道云等,用起来感觉很卡,而且“闭源”,想增加功能很难。因此我就自己做一个网盘,并增加了很多其他功能,现已完全开源。

介绍

已实现的功能

  • 文件夹的新建、删除、重命名、移动、导出
  • 文件上传、下载、新建、删除、移动、重命名、分享
  • txt、markdown、表格、文档的在线预览和编辑功能
  • 支持 xmind 文件在线预览和编辑
  • 支持 python 脚本在线编辑和运行
  • 支持远程连接 Linux 服务器
  • 不同用户的数据完全隔离
  • 可任意挂载多个磁盘

技术选型

  • 后端框架:FastApi
  • 数据库:SQLite3 or MySQL
  • 前端:原生 html + js + css

实现方案

文件和文件夹的层级结构维护在数据库中,这样在页面查询列表时,只需要查询数据库就可以了,速度会快很多;同时数据库中的文件和文件夹的层级结构也全部真实的映射到磁盘里,所见即所得,便于以后你不想用这个系统了,它也保留完整有序的文件,而不是乱序的。

  • 查询文件和文件夹时,直接在数据库中查询,可以非常方便的进行过滤和排序,只有在读写文件和文件夹时,才会和磁盘交互,有效的降低了磁盘IO。
  • 所有文件和文件夹的数据通过 id 查询,页面上只能看到相对路径,完全隐藏了本地真实的文件路径。
  • 可以很方便的“挂载”磁盘,只需要在配置文件中将新磁盘配置上就行了。
  • 搭配大家都熟悉的 Windows 文件系统的页面交互(来源Windows12概念图),前端页面使用的是这个作者tjy-gitnub的开源项目,非常感谢作者。我只是在这个项目的基础上进行了大量的增删(删除了大量的静态代码和缓存数据的代码,提高了整个页面的加载速度,并把大量的功能变成真实有用的功能)。

页面

登录页面

登录页面的背景图是可以换的

桌面

桌面的背景图也是可以换的

任务栏

任务栏采用的是居中展示的样式,Windows11以后应该都是这个样式

文件资源管理器

上边一排工具栏依次是新建文件、新建文件夹、重命名、移动、复制、上传、下载、分享、删除,这些图标均来源Windows10的系统图标。文件列表可按照名称、创建时间、修改时间排序。文件 资源管理器中的所有文件,除了支持在线编辑的文件外,其他格式的文件会直接用浏览器打开,浏览器能打开预览的文件可以直接在浏览器中预览,浏览器不支持的文件则直接下载到本地。

使用文件上传功能上传文件时,会首先检测网盘是否存在相同的文件,如果存在则不上传,这就是类似一些网盘的秒传的功能。

回收站

上边一排工具栏依次是还原文件、删除文件、清空回收站,基本上和Windows系统的回收站操作一样。

我的分享

当分享文件时,可设置分享链接的打开次数,超过次数会返回 Nginx 默认页面。其中:markdown、表格、文档 和 xmind 分享链接打开后页面虽然可以编辑,但数据不会保存,仅支持导出数据。

分享功能的常规使用场景是分享文件给别人,还要一个场景就是去打印店打印文档,通过浏览器调用打印机后,刷新页面到指定的次数,这个链接就失效了,有效降低了文档泄漏的风险和使用U盘被病毒感染的风险。

设置

支持修改密码、退出登陆、上传桌面背景图片、设置主题、播放本地视频、ssh。

计算器

一个感觉很鸡肋的小工具,感觉还不如用 python 命令行计算。

Whiteboard

没事可以用鼠标涂鸦画画,放松一下。

连接 Linux

首先需要设置服务器连接信息,然后就可以直接在浏览器上打开页面连接 Linux 服务器;支持上传文件到服务器,或者下载文件到本地。为了提供更好的使用体验,提供了 Ctrl+C(复制)和 Ctrl+V(粘贴)快捷键,不仅如此,还仍然保留了 Ctrl+C 快捷键终止前台进程的功能。为节省服务器资源,对“挂机”超过10分钟的连接进行关闭。



播放本地视频

播放本地视频,不消耗流量。为什么会做这个功能,因为我的手机上没有安装任何视频播放软件,只能用相册自带的功能播放视频,但相册自带的功能不支持记录视频播放进度,如果手误碰退出视频,则又会重头开始播放。所以这个功能就是用来记录视频播放进度的。

python命令行

支持 python 命令行,支持导入 python 官方库,可以用来做一些简单的计算,或者处理一些简单的数据。

在线编辑功能

所有在线编辑功能:每隔10秒自动保存,标题栏文件名旁会展示自动保存的时间,点击关闭按钮也会自动保存。其中txtmarkdown文档的在线编辑支持导出成html格式,用浏览器打开导出的html后,可通过浏览器自带的打印功能把文件转成PDF格式。

txt 文件

点击右上角的下载按钮,可以直接将当前文档转成 html,并下载。如需下载原 txt文件,可在文件资源管理器中选中文件并点击下载。

markdown 文件

点击右上角的下载按钮,可以直接将当前文档转成 html,并在新标签页打开,如需下载这个 html,可在新打开的标签页右键下载。需要注意:这里使用的是第三方工具转的html,一些样式在转换时会丢失。如需保留所有的html样式,可在工具栏点击全窗口预览HTML即可。

表格

由于表格功能太多,暂不支持导出功能,可用于在线存储一些数据,可手动复制表格中的数据,并粘贴到本地 excel 表格中。

文档

该文档左侧带有目录,支持目录定位页面到指定位置。可导出成 html 格式的文件,用浏览器打开 html 文件,调用浏览器自带的打印功能,调整打印页边距,可把文档转成页面布局合适的 PDF 文件。

xmind 脑图

支持标准的 xmind 文件(xmind8xmind zen(xmind 2020))在线编辑,文件打开后,原文件格式已经转换,只能通过页面工具栏中的导出功能才能导出 xmind8(只支持导出 xmind8,不支持导出 xmind zen)。在线编辑的脑图中添加的样式、颜色、优先级、完成进度、备注等也支持导出到 xmind8 中,更多功能请看下面图片中的内容。亲测文件打开速度比 xmind8 快很多。

python 脚本

支持在线编辑 py 文件,点击运行后可直接在浏览器上看到结果。如果想导入第三方库,需要专门打包,具体可查阅相关资料。

其他

1、因为是在操作本地文件,所以不支持集群部署和分布式存储,如需集群部署和分布式存储,可查看我的另一个项目;

2、登录页面的背景图片的路径是web/img/pictures/undefined/background.jpg,如需修改登录背景图片,可直接替换掉这个图片即可,注意:图片名必须是background.jpg

3、所有页面已经尽可能的适配手机端了。使用手机浏览器打开,横屏展示,整体使用体验还是不错的;

部署

最经典的前后端分离的部署架构,整个项目部署非常简单,详见项目文件夹中的 README.md。

推荐部署方案

  • 带公网IP的云服务器,买云服务器的钱比开网盘的VIP会员的钱要便宜的多得多,而且有公网IP,还可以干其他很多有趣的事情;
  • 树莓派,用于部署网盘服务,可根据自己的需求买对应配置的树莓派,500元左右就可以买一个差不多配置的树莓派了,咸鱼上会更便宜。树莓派 24h 开机,一个星期的耗电量大约不到1度电;高配置的树莓派还可以用来当电脑、电视、机顶盒用哦,就看你的动手能力有多强了;
  • 硬盘,自己可以买一个几T的机械硬盘存储数据,现在机械硬盘也很便宜;土豪可以用固态硬盘,也不是很贵;
  • 内网穿透,在云服务器和树莓派上分别部署内网穿透软件即可,推荐使用 frp 进行内网穿透;

可选部署方案

  • 树莓派 + 硬盘;
  • 公网IP,可以让宽带运营商给你一个固定/动态的公网IP(IPv4就不用想了,运营商肯定不会给,可以使用IPv6);
  • 域名,由于IPv6很难记,所以还需要购买一个域名(便宜的域名一年也就不到8元);
  • 动态域名解析,宽带运营商如果给你一个固定的公网IP,那样就很不安全,动态公网IP会安全一些,这就需要动态域名解析;

其他部署

如果你没有随时随地使用的需求,只是在局域网内用着玩,那你就随便找个电脑部署就行了;

以上你就拥有了个人网盘,保护个人数据安全;不仅如此,你还可以自己开发,扩展功能。

项目地址

项目地址: https://github.com/leeyoshinari/OneDrive,欢迎使用,欢迎 Star。

Windows风格的个人网盘,支持文档在线编辑的更多相关文章

  1. wps金山文档在线编辑--.Net 接入指南

    一.申请成为服务商,对金山文档在线服务进行申请 ①进入官网 https://open.wps.cn/ ②申请后如下图,点击右下角的进入服务 ③申请成功后 ④数据回调URL一定是服务器地址,本次我使用的 ...

  2. Office文档在线编辑的实现之二

    讲述了如何通过iis的webdav支持实现客户端的office直接编辑服务器上的文件,本篇将讲解如何实现客户端的office直接编辑数据库中的二进制形式保存的office文件. 实现的关键:模拟IIS ...

  3. 告别收费BI!如何自己动手做一个免费的可视化数据报表还支持文档在线预览?

    本人大学刚毕业目前在一家互联网公司从事产品运营工作,一季度刚过,公司需要我出一份产品运营数据报表,由于产品用户数据.订单数据等数据量太大,我希望找一款Bi产品,支持我做出一个精美的可视化报表,还可以让 ...

  4. 使用WebDAV实现Office文档在线编辑

    Office的文档处理能力是非常强大的,但是它是本地资源,在Office Web App尚未成熟前,仍需要使用本地能力来进行文档编辑,可是现代的系统的主流却是B/S,所以在B/S中调用本地的Offic ...

  5. Office文档在线编辑的实现之一

    因为项目的关系,研究了一下Office的在线编辑功能,写出来共享一下. Office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件. IIS(6.0)支持webdav ...

  6. sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法

    昨晚配置完成office web apps 2013的外部网络访问之后,今天发现了一个很奇怪的问题,就是IE 11不支持文档在线浏览,找了很多方法,打补丁什么的,都不管用,最后在预览文件的页面,看到& ...

  7. 玩转Windows Azure存储服务——网盘

    存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...

  8. 够快网盘支持与iOS-ASIHTTPRequest框架学习

    够快网盘支持与iOS-ASIHTTPRequest框架学习 前段时间在公司的产品中支持了够快网盘,用于云盘存储. 在这个过程中,学习到了很多新的知识,也遇到了很多问题,在此记录一下. 首先就够快的AP ...

  9. 在物理 Data Guard 中对异构主备系统的支持 (文档 ID 1602437.1)

    Data Guard中主数据库与物理备用数据库(Redo Apply)之间可以有什么差别?本说明针对重做应用和 Oracle Data Guard 12 发行版 1 进行了更新.它适用于 Oracle ...

  10. [BI项目记]-配置Sharepoint2013支持文档版本管理笔记

    做开发或者做方案,写文档是很重要的一个工作,我们经常需要知道文档被修改的次数,谁在什么时间修改的文档,以及在某一个版本中,都修改了哪些内容,以及不同版本的文档之间有什么差别. 如何对文档进行版本管理, ...

随机推荐

  1. Typescript - 索引签名

    1 索引签名概述 在 TypeScript 中,索引签名是一种定义对象类型的方式,它允许我们使用字符串或数字作为索引来访问对象的属性. 1.1 索引签名的定义和作用 索引签名通过以下语法进行定义: { ...

  2. [Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM

    目录 [Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM 前言 一.元对象 但是 二.关于Q_OBJECT等宏属性 1.元对象系统 2.信号与槽 3.属性系统 三.关于Q_ENUMS 1.将其注册 ...

  3. 解密Prompt系列14. LLM Agent之搜索应用设计:WebGPT & WebGLM & WebCPM

    前两章,我们分别介绍了基于微调和prompt的工具调用方案,核心都是如何让大模型和工具进行交互,包括生成工具调用语句和处理工具调用请求.不过在实际应用中,想要设计一个可以落地的LLM Agent,需要 ...

  4. SonarQube系列-架构与外部集成

    介绍 Sonar是一个代码质量管理的开源平台,基于Java开发的,用于管理源代码的质量,通过插件形式,可以支持包括java.C#.JavaScript等二十余种编程语言的代码质量管理与检测. 它具有免 ...

  5. Spring Bean 的作用域(Bean Scope)

    前言 大家好,我是 god23bin,今天我们来聊一聊 Spring 框架中的 Bean 作用域(Scope). 什么是 Bean 的作用域? 我们在以 XML 作为配置元数据的情况下,进行 Bean ...

  6. 杰哥教你面试之一百问系列:java集合

    目录 1. 什么是Java集合?请简要介绍一下集合框架. 2. Java集合框架主要分为哪几种类型? 3. 什么是迭代器(Iterator)?它的作用是什么? 4. ArrayList和LinkedL ...

  7. Solution -「CF 724F」Uniformly Branched Trees

    Description Link. 给定三个数 \(n,d,mod\),求有多少种 \(n\) 个点的不同构的树满足:除了度数为 \(1\) 的结点外,其余结点的度数均为 \(d\).答案对质数 \( ...

  8. Solution Set -「ARC 109」

    「ARC 109A」Hands Link. 讨论即可,除了煞笔出题人写了个死马的题面. #include<cstdio> #include<algorithm> using n ...

  9. C#学习笔记--变量类型的转换

    变量类型的转化: 转换原则 同类型的大的可以装小的,小类型的装大的就需要强制转换. 隐式转换: 同种类型的转换: //有符号 long-->int-->short-->sbyte l ...

  10. ptaCCF

    返回首页 English站点地图联系我们常见问题CCF招聘登录 加入CCF 计算机 CCF简介   中国计算机学会(CCF)成立于1962年,全国性学会,独立社团法人,中国科学技术协会成员. CCF是 ...