大家好,又见面了,我是你们的朋友全栈君。
目前的项目是在做一款带桌面共享的代码编辑器,其中需要一个发送大文件的功能,传统的node.js处理大文件就是用Buffer.slice(0.offset)的思路把文件分割开,然后通过tcp或udp分开发送。前端中处理二进制的有Blob,它也有slice的方法,也可以将文件拆分开。然后借助websocket发开发送,然后在客户端(注意不是服务端)将文件合并。有人说websocket可以直接发,但是他的大小受到限制,比如发200M的东西,就会出问题。而我的方案就不会存在问题.最主要的是在发送文件的同时也不会影响到桌面共享的速度。
效果图:
下面是两个客户端发送和接受的代码:
发送方:
核心方法如下,注意tp参数代表的是你上传的文件或者采用拖动传入的文件,类型是blob
代码语言:javascript复制function sendBig(tp){
var pack_id="pk_" Math.floor(Math.random()*100000);
var len=tp.size;
var sz=[];
kg=true;
var k=0;
if(len>16*1024){
var p=Math.ceil(len/(16*1024))
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157604.html原文链接:https://javaforall.cn