Ionic2

时间:2017-03-20 14:05:50

标签: javascript typescript ionic2 cordova-plugins quickblox

我正在将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对象:

Ionic 2 code

这是我在quickblox js例子中得到的那个:

Quickblox js code

除了这个File对象外,所有其他内容看起来都相同。 我几乎可以肯定这是我遇到的问题,而且因为我是这个领域的新手,我无法找到从Ionic中的File对象进行投射的方法。类似于js示例中的File对象。 提前感谢您的时间和帮助。

修改

我附上了Ionic应用程序的请求/响应日志:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

您能否发布用于连接聊天,创建会话,打开视频通话的代码? 关于quickblox的文档非常糟糕,我在连接聊天时遇到了困难。