如何在 Swift 中使用 GCDWebServer 读取 POST 请求的正文



我正在尝试使用GCDWebServer读取/写入文档目录中的文件。阅读文件似乎相当简单,我已经差不多需要了。

我想使用 POST 请求写入文件。所以我尝试为方法"POST"添加一个处理程序,但在进程块中我似乎根本无法读取请求的正文。

如果我做这样的事情:

webServer?.addHandler(forMethod: "POST", path: "/post", request: GCDWebServerDataRequest.self, processBlock: {request in
        dump(request)
        return GCDWebServerDataResponse(html: "An error occurred.")
    })

这会将所有标头打印到控制台(在 NSObject 中(。但是如何在正文中读取变量呢?

(iOS 10.3, Swift 3, XCode 8.3.2(

    self.webServer?.addHandler(forMethod: "POST", path: "/uploadfile", request: GCDWebServerMultiPartFormRequest.classForCoder(), processBlock: { (request) -> GCDWebServerResponse? in
        print("ádasdnaskdnaskjd=====<")
        let get = request as! GCDWebServerMultiPartFormRequest
        do {
            if let files = get.files {
               try files.forEach({ (file) in
                    if let multipartFile = file as? GCDWebServerMultiPartFile {
                        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
                        let urlOfFile = documentsPath.appending("/(multipartFile.fileName!)");
                        let url = URL(fileURLWithPath: urlOfFile)
                        let fileManager = FileManager.default
                        try fileManager.moveItem(at: URL(fileURLWithPath: multipartFile.temporaryPath), to: url);
                        print("URL of file: (url)")
                    }
                })
            }
            return GCDWebServerDataResponse.init(html: "")
        } catch {
            print(error.localizedDescription)
        }
        return GCDWebServerDataResponse.init(html: "")
    })

您可以使用邮递员用正文(表单数据(对其进行测试

相关内容

  • 没有找到相关文章

最新更新