【问题标题】:XEP-0363: HTTP File Upload in SwiftXEP-0363:Swift 中的 HTTP 文件上传
【发布时间】:2025-12-12 23:10:01
【问题描述】:

使用 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)

【问题讨论】:

  • 你能帮我上传目标c中的文件吗?提供示例代码或给出 xep - 0363 的想法。我对此有很多研究,但没有任何工作

标签: ios iphone swift ejabberd xmppframework


【解决方案1】:

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

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

【讨论】: