保存收到的文件从xmpp Strophe si-filetransfer
Save received files from xmpp Strophe si-filetransfer
我正在使用stropheh .si-filetransfer.js插件在我的web应用程序中实现文件传输。我可以在iq节内接收文件细节。我的问题是,我如何从iq节提取文件数据并下载它?
我引用的链接:https://github.com/strophe/strophejs-plugins/tree/master/ibb
谢谢
在接收端,您需要收集fileHandler函数上的文件信息,然后抓取ibbHandler上的所有数据块(例如使用数组),最后您必须连接所有文件部分(数据块)并恢复原始文件。在下面的示例中(改编自您建议的链接),我假设文件使用FileReader API和readAsDataURL()方法进行分块,因此数据是base64编码的。
var aFileParts, filename, mimeFile;
var fileHandler = function(from, sid, filename, size, mime) {
// received a stream initiation
filename = filename;
mimeFile = mime;
};
connection.si_filetransfer.addFileHandler(fileHandler);
var ibbHandler = function (type, from, sid, data, seq) {
switch(type) {
case "open":
// new file, only metadata
aFileParts = [];
break;
case "data":
// data
aFileParts.push(data);
break;
case "close":
// and we're done
var data = "data:"+mimeFile+";base64,";
for (var i = 0; i < aFileParts.length; i++) {
data += aFileParts[i].split(",")[1];
}
var span = document.createElement('span');
span.innerHTML = '<a href="'+data+'" download="'+filename+'">'+filename+</a>;
default:
throw new Error("shouldn't be here.")
}
};
相关文章:
- 在基于Strophe.js的聊天应用程序中处理状态
- Strophe.js MUC:创建一个房间并连接多个房间
- php函数向XMPP服务器发送消息,不提供日志;不起作用
- 我该如何在允许用户导航到其他页面的同时,使用strophe保持聊天会话的打开
- strophe.js组邀请处理程序未触发
- XMPP客户端未连接-使用Node Bosh服务器
- 在xmpp多聊天中,管理员角色只授予创建房间的在线用户成员资格
- XMPP Strophe.JS应用程序安全问题
- 如何使用 Strophe.js 在 XMPP(开放火服务器)中实现 see by 和消息碳功能
- Phonegap,Strophe.js和xmpp pubsub在应用程序离线时推送通知
- 使用Strophe.js自定义XMPP消息
- XMPP'客户与Strophe之间的智商交流
- 为什么使用strophe.js的XMPP客户端仍然可以工作,包括flXHR.js
- XMPP: AngularJS + Strophe
- XMPP web客户端(使用strophe.js)需要花费时间连接ejabberd服务器
- 保存收到的文件从xmpp Strophe si-filetransfer
- XMPP: AngularJs + Strophe.js
- 使用Strophe js (CONNFAIL)连接到Prosody XMPP服务器
- xmpp strophe用户注销时接收通知订阅
- 使用 Strophe.js-Register-Plugin 注册 XMPP-Account