栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用socket.io-stream将文件从服务器流传输到客户端

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用socket.io-stream将文件从服务器流传输到客户端

这是我正在使用的工作示例。但是以某种方式(也许仅以我为例),这可能会非常缓慢。

//== Server Sidess(socket).on('filedownload', function (stream, name, callback) {    //== Do stuff to find your file    callback({        name : "filename",        size : 500    });    var MyFileStream = fs.createReadStream(name);    MyFileStream.pipe(stream);});//== Client Sidefunction downloadFile(name, originalFilename) {    var deferred = $.Deferred();    //== Create stream for file to be streamed to and buffer to save chunks    var stream = ss.createStream(),    fileBuffer = [],    fileLength = 0;    //== Emit/Request    ss(mysocket).emit('filedownload', stream, name, function (fileError, fileInfo) {        if (fileError) { deferred.reject(fileError);        } else { console.log(['File Found!', fileInfo]); //== Receive data stream.on('data', function (chunk) {     fileLength += chunk.length;     var progress = Math.floor((fileLength / fileInfo.size) * 100);     progress = Math.max(progress - 2, 1);     deferred.notify(progress);     fileBuffer.push(chunk); }); stream.on('end', function () {     var filedata = new Uint8Array(fileLength),     i = 0;     //== Loop to fill the final array     fileBuffer.forEach(function (buff) {         for (var j = 0; j < buff.length; j++) {  filedata[i] = buff[j];  i++;         }     });     deferred.notify(100);     //== Download file in browser     downloadFileFromBlob([filedata], originalFilename);     deferred.resolve(); });        }    });    //== Return    return deferred;}var downloadFileFromBlob = (function () {    var a = document.createElement("a");    document.body.appendChild(a);    a.style = "display: none";    return function (data, fileName) {        var blob = new Blob(data, {     type : "octet/stream" }),        url = window.URL.createObjectURL(blob);        a.href = url;        a.download = fileName;        a.click();        window.URL.revokeObjectURL(url);    };}());


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号