谈一谈开发网盘中碰到的问题(一)

首先介绍一下项目:土星云企业网盘(http://www.saturncloud.com.cn/netdisk),一款基于vue+element ui面向企业和用户的人员管理和存储网盘。主要功能包含:文件、文件夹并行上传下载,复合文件(超过4G)的上传、下载。文件、文件夹分享功能,文件夹共享功能。文件、文件夹重命名、复制、移动功能。文件、文件夹批量删除、下载、移动功能。已删除文件、文件夹批量还原、彻底删除功能。上传下载列表展示功能。内部共享功能,公共资源功能。人员管理链接邀请成员功能。企业信息和产品套餐功能等。基本功能类似百度企业网盘。

本项目,上传采用的是ipfs分布式存储上传。感兴趣的童鞋可以了解一下。因为和传统的http上传下载不同,所以在前端处理上会用到许多知识点。首先,所有的上传下载都依赖以’Saturn Agent '命名的桌面客户端。不同的系统对应不同的客户端。

本项目文件上传可以概括为:

1.file_upload 检查内存是否充足

2.random 生成密钥(45位字符串,文件加密/解密密钥,multibase-Base58BTC编码)

3.pack(POST multipart/form-data) 将文件size,random返回值等作为参数,对原始文件进行处理,完成压缩、加密、切片。返回Multihash等值

4./ws/up 文件上传接口,将数据块、链接块 分发给不同的存储节点冗余编码计算(并行),生成 校验块 分发给不同的存储节点使用websocket协议反馈数据上传进度、速度信息。将pack返回的Multihash作为文件标识,socket更新的percent同步上传列表文件进度。为防止因网速等因素导致token失效,在同步进度同时要在socket推送过程中触发/combo/123请求来延长token

5.Add_file 服务器上传(普通文件is_dir传-1,文件夹传1,复合文件传2),ipfs上传完毕后将文件上传到服务器上。

由此,是一个普通文件的上传过程。如果选择多个文件的话,则循环重复上述操作。如果选择文件夹的话,则通过我自己封装的一个方法(后面会介绍)来判断如果是文件夹的话则is_dir传1,如果是文件的话依然重复上述操作。这里主要需要注意一个问题,选择上传的文件夹里面的文件、文件夹路径要跟最终页面上展示的一模一样。

Q1:浏览器解析文件夹files属性后返回的文件信息不满足或不好处理文件上传业务
处理方法:封装我需要的文件信息结构
let TREE = function (name, is_dir) {this.name = name;this.is_dir = is_dir;this.path = "";this.index;this.size;this.children = [];this.add = function (child) {this.children.push(child);};};var now_dir;var children;let root = new TREE(folder[0].webkitRelativePath.split("/")[0],1);for (var i = 0; i < folder.length; i++) {var folderPath = folder[i].webkitRelativePath.split("/");now_dir = root;for (var j = 1; j < folderPath.length - 1; j++) {var find_flag = 0;for (var k = 0; k < now_dir.children.length; k++) {if (now_dir.children[k].is_dir == 1)children = now_dir.children[k];else continue;if (children.name == folderPath[j]) {find_flag = 1;now_dir = children;break;}}if (find_flag == 0) {let new_dir = new TREE(folderPath[j], 1);now_dir.add(new_dir);now_dir = new_dir;}}let file = new TREE(folderPath[j], 0);file.path = folder[i].webkitRelativePath;file.index = folder[i];file.size = folder[i].sizenow_dir.add(file);}console.log(root)
分别打印选择文件、多文件、层级复杂文件夹封装前后的浏览器解析结构

单个文件
多个文件
文件夹封装前后对比

又到了快下班的时间,干饭去~

谈一谈开发网盘中碰到的问题(一)相关推荐

  1. 写在工作的第十年: 谈一谈专注和基础的重要性

    写在工作的第十年: 谈一谈专注和基础的重要性 老帮菜的自我吐槽 不知不觉, 作为一个打工人, 作为一个写程序的打工人, 职业生涯的第十个年头悄然而至. 从一个充满雄心壮志的有志青年, 到如今有家有室的 ...

  2. 从一张图开始,谈一谈.NET Core和前后端技术的演进之路

    从一张图开始,谈一谈.NET Core和前后端技术的演进之路 邹溪源,李文强,来自长沙.NET技术社区 一张图 2019年3月10日,在长沙.NET 技术社区组织的技术沙龙<.NET Core和 ...

  3. 有一群200w年薪的朋友是什么感觉?谈一谈入学中国科学院大学的几点感受吧

    我叫阿广,偶尔正经,偶尔逗比,97年生人,在求学期间当过鸡头鸡尾,当过凤尾没当过凤头.大家如果想深入了解我,可以查看本公众号的原创文章. 技术人光有技术走不长久,所以今天不更新技术文章了,也给大家谈一 ...

  4. 先查询再插入的存储过程怎么写_谈一谈 InnoDB(1) - 底层存储文件结构

    看技术文章是不是很累呢, 这次来个轻松点的~来谈一谈MySQL最主流的数据库引擎 InnoDB 吧~ 序 老王走进一号会议室, 随手打开了灯, 小张紧随其后 "王哥, 找我来干啥啊" ...

  5. 谈一谈我对本科计算机专业的认识

    新的一年开始了,我大学的所有课程也刚刚结束不久,想一写篇文章谈一谈我对计算机专业的认识.博主学的专业是"计算机科学与技术",今年大四,三年半的校园生活使我对计算机专业的认知一次又一 ...

  6. 超市管理系统的html页面,基于WEB的超市管理系统_站内搜索_Web开发网

    Web开发网 > 站内搜索 > 基于WEB的超市管理系统 系统ctrl+alt+del调出系统任务管理器后,发现没有用户选项卡,如下图 这是因为电脑上Windows用户登录或注销的方式配置 ...

  7. 谈一谈网络编程学习经验(陈硕)

    作者:陈硕  原文地址:http://blog.csdn.net/solstice/article/details/6527585 本文谈一谈我在学习网络编程方面的一些个人经验."网络编程& ...

  8. 黑大汇文楼计算机研究生,谈一谈我在黑龙江大学的复试经历

    原标题:谈一谈我在黑龙江大学的复试经历 一.基本信息 本科院校:重庆理工大学,经济学专业,二本 目标院校:黑龙江大学,法律硕士(民商法方向) (备注:黑龙江大学法学院成立于1981年,历史悠久,法学院 ...

  9. 谈一谈网络编程学习经验

    转自  陈硕 giantchen@gmail.com blog.csdn.net/Solstice 2011-06-06 PDF 版下载:https://github.com/downloads/ch ...

最新文章

  1. EasyDL桌面版发布!3天体验学习
  2. Spring boot使用Bootstrap
  3. 如何将javaweb项目部署到linux下
  4. 量子化学计算机理,几种化学反应机理的量子化学理论计算
  5. 拆分窗口QSplitter
  6. 剑指 Offer II 006. 排序数组中两个数字之和
  7. .NET Interop.SHDocVw和MSHTML引用如何操作
  8. Python结巴中文分词工具使用过程中遇到的问题及解决方法
  9. 联想服务器安装系统 F11,教你联想thinkpad系统还原f11一键恢复方法
  10. strconv,strings的学习(三)
  11. JDBC的一些API
  12. 如何提高学习欲--奖励机制
  13. shell遍历多个数组
  14. Mongodb 3.6安装过程(centos7.9)
  15. 使用copy con命令创建批处理文件
  16. 01 数学软件与建模---基础
  17. Windows10 官方原版镜像下载途径 Label:win10解决方案
  18. import org.apache.lucene.analysis.standard.StandardAnalyzer飘红
  19. 记一次解决Intel 9462无线网卡的笔记本安装Ubuntu16.04后无法连接WIFI问题的艰难历程
  20. 2021-08-07诺瓦科技面试

热门文章

  1. 疯狂!丈母娘让我用 Python 算领证吉日!
  2. lg g6 android 9,LG G6再无秘密:Android 7.0+18:9圆角屏
  3. 《百年捷克》读书笔记及读后感作文2200字
  4. Uni-app运行到mumu模拟器
  5. 综合实践活动信息技术小学版第三册电子课本_福建首个电子竞技专业为你开启电竞之路,圆你电竞梦想!——三明医学科技职业学院电子竞技运动与管理专业介绍...
  6. 容器技术及其应用白皮书(上)-- 容器技术
  7. 谷歌chromeos_谷歌新操作系统Fuchsia网站上线,同时支持手机和PC,鼓励开发者参与进来...
  8. 给服务器安装Anaconda遇到的问题和解决办法
  9. 智慧工地助力建筑行业长期健康发展
  10. 使用STM32点亮LED