我正在将Quickblox集成到我的Ionic2应用程序中,现在除了上传文件外,我能够做所有事情。 在Quickblox中,您必须使用由他们制作的函数上传文件,根据js文档,如下所示:
var inputFile = $("input[type=file]")[0].files[0];
var params = {name: inputFile.name,
file: inputFile,
type: inputFile.type,
size: inputFile.size,
public: false};
QB.content.createAndUpload(params, function(err, response){
if (err) {
console.log(err);
} else {
console.log(response);
var uploadedFile = response;
var uploadedFileId = response.id;
}
});
所以我将上面的代码翻译成了typescript,我有类似的东西:
uploadFile(filename) {
File.resolveDirectoryUrl(cordova.file.dataDirectory).then(
(dirEntry) => {
File.getFile(dirEntry, filename, { create: false }).then(
(fileEntry) => {
console.log(fileEntry);
fileEntry.file((file) => {
console.log(file);
var params = {
name: file['name'],
file: file,
type: file['type'],
size: file['size'],
'public': false
};
quickblox.content.createAndUpload(params,
(err, response) => {
if (err) {
console.log(err);
} else {
console.log(response);
var uploadedFileId = response.id;
var msg = {
type: 'groupchat',
body: "[attachment]",
extension: {
save_to_history: 1,
}
};
msg["extension"]["attachments"] = [{ id: uploadedFileId, type: 'photo' }];
quickblox.chat.send(this.xmpp_room_jid, msg);
}
});
})
}).catch(
(err) => {
console.log(err);
}
);
}
);
}
这项工作的条款是"我从quickblox服务器"得到了好的回复,但是当我去quickblox的管理控制台检查上传的内容时,我发现我上传的图像有0个字节。 因此,在检查代码一段时间后,我将所有函数调用与quickblox的示例应用程序并排比较,我可以找到的唯一区别是在File对象中。
这是我在Ionic 2应用程序中获得的File对象:
这是我在quickblox js例子中得到的那个:
除了这个File对象外,所有其他内容看起来都相同。 我几乎可以肯定这是我遇到的问题,而且因为我是这个领域的新手,我无法找到从Ionic中的File对象进行投射的方法。类似于js示例中的File对象。 提前感谢您的时间和帮助。
修改
我附上了Ionic应用程序的请求/响应日志:
答案 0 :(得分:0)
您能否发布用于连接聊天,创建会话,打开视频通话的代码? 关于quickblox的文档非常糟糕,我在连接聊天时遇到了困难。