XEP-0363:Swift中的HTTP文件上载

时间:2016-12-30 10:57:23

标签: ios iphone swift ejabberd xmppframework

使用XMPP ejabberd服务器处理聊天应用程序,这里我无法获得图片上传插槽,这是用于服务器上传附件的文档(http://xmpp.org/extensions/xep-0363.html

这是我的代码,我的问题是在请求使用此代码后没有任何来自服务器的响应没有发生我的服务器工作我能够发送短信,请帮助。

        let iqRequest = DDXMLElement.element(withName: "iq") as! DDXMLElement

        iqRequest.addAttribute(withName: "from", stringValue: sender.myJID.full())
        iqRequest.addAttribute(withName: "id", stringValue: messageID!)
        iqRequest.addAttribute(withName: "type", stringValue: "get")
        iqRequest.addAttribute(withName: "to", stringValue: "upload.hostname")

         let requestElement = DDXMLElement.element(withName: "request", uri: "urn:xmpp:http:upload") as! DDXMLElement

         let fileNameElement = DDXMLElement.element(withName: "filename") as! DDXMLElement
         fileNameElement.stringValue = "imageName.png"

         let sizeElement = DDXMLElement.element(withName: "size") as! DDXMLElement
         sizeElement.stringValue = "23456"

         requestElement.addChild(fileNameElement)
         requestElement.addChild(sizeElement)


        iqRequest.addChild(requestElement)
        sender.send(iqRequest)

1 个答案:

答案 0 :(得分:2)

您是否还安装了ejabberd扩展程序?您应该参考此问题,而不是如何设置扩展程序:HTTP File Upload (XEP-0363)。您可以从管理面板检查是否已启用该模块。

但是,我个人不会使用ejabberd来托管文件。在过去,我已将文件上传到标准Apache服务器,然后通过XMPP发送图像URL。这样做有好处,因为它可以让您更好地控制文件。例如,您可以使用AWS来托管文件,然后通过CDN分发它们。