V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ydongd
V2EX  ›  分享创造

仿百度网盘,个人云盘

  •  
  •   ydongd · 2020-11-23 17:58:12 +08:00 · 4059 次点击
    这是一个创建于 1463 天前的主题,其中的信息可能已经有所发展或是发生改变。

    仿百度网盘,实现个人文件存储云盘。

    分片上传、断点续传

    文件过大时,上传文件需要很长时间,且中途退出将导致文件重传。

    分片上传: 上传文件时,在本地将文件按照 2M 的大小将文件进行分片。在服务器端将文件组合。

    断点续传: 如果文件没有上传完,关闭客户端。再一次上传文件时,对比服务器已经上传的分片,只需要上传没有的分片。

    秒传

    每一个文件都有对应的 md5 码。当检测上传文件时,如果本地已经存在相同 md5 的文件,直接将文件拷贝到对应目录。

    项目地址 https://github.com/yddeng/filecloud

    第 1 条附言  ·  2020-11-25 12:02:28 +08:00

    文件保存方案

    SaveFileMultiple 文件是否保存为多份。

    已经存在md5文件时

    • 当 SaveFileMultiple=false,仅添加文件指向,当前文件夹下不存在该文件,即整个云盘只存在一份源文件。 删除时,判读文件引用,当引用为0时执行文件的删除;若删除源文件且还有文件引用,将文件移动到引用处。
    • 当 SaveFileMultiple=true,会将源文件拷贝一份到当前目录。整个云盘存在多份文件,磁盘占用为N倍。删除时,直接删除当前文件。

    由于不设计目录结构的保存,故 SaveFileMultiple=false时,程序重启会恢复到真实目录文件结构。

    9 条回复    2020-11-25 12:04:37 +08:00
    Fred0410
        1
    Fred0410  
       2020-11-23 21:10:27 +08:00   ❤️ 1
    嗯哼,又一个网盘。
    kiduu
        2
    kiduu  
       2020-11-23 21:12:01 +08:00
    请问秒传这个拷贝是拷贝完整文件吗?就是说假如我上传一个 1GB 大小的文件上传 10 次就会占用 10GB 云端服务器存储空间这样?还是只是快捷方式这种形式?
    xinyana
        3
    xinyana  
       2020-11-24 02:19:53 +08:00 via Android
    其实折腾来折腾去,还是花钱买大公司的会员划算
    WishMeLz
        4
    WishMeLz  
       2020-11-24 08:52:25 +08:00
    我的 5m 小水管根本没有用
    ydongd
        5
    ydongd  
    OP
       2020-11-24 08:58:30 +08:00
    没怎么发过主题和评论,不知道怎么 @ 。
    ydongd
        6
    ydongd  
    OP
       2020-11-24 09:00:58 +08:00
    秒传功能现在是拷贝完整文件,不同目录下是复制了一份文件,相同目录就直接判断存在。后面会改成一个文件指向,指向原始文件。
    ydongd
        7
    ydongd  
    OP
       2020-11-24 09:06:31 +08:00
    目前没有做存盘,每次启动扫描配置目录,根据文件建立的索引,所以需要目录下有文件才能在前端显示。后面可以加上存盘,将文件指向一起存下来,重启后仍然可以在多个目录下看到文件
    Judoon
        8
    Judoon  
       2020-11-24 11:35:51 +08:00
    挺好的,但是我推荐这个
    https://github.com/filebrowser/filebrowser
    ydongd
        9
    ydongd  
    OP
       2020-11-25 12:04:37 +08:00
    增加了文件保存方式,可选择多份保存、仅保存一份源文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:32 · PVG 13:32 · LAX 21:32 · JFK 00:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.