1

我正在尝试使用 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)

4

1 回答 1

1
    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: "")

    })

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

于 2017-06-09T04:30:54.720 回答