Swift 3 Alamofire分段上传

DCD*_*CDC 46 networking ios swift alamofire swift3

由于迁移到Swift 3,我发现很难编译使用Alamofire的项目.

上传multipartFormData时出现问题:

Alamofire.upload(.POST, URL, headers: headers, multipartFormData: {
        multipartFormData in
.
.
. 
}) 
Run Code Online (Sandbox Code Playgroud)

成员'上传的模糊参考(_:to:method:headers :)'

任何帮助非常感谢,提前感谢!

解决:

 Alamofire.upload(multipartFormData: { (multipartFormData) in

        multipartFormData.append(fileData, withName: "file_pack", fileName: "file_pack", mimeType: "text/plain")


        for (key, value) in self.parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
        }, with: URL2, encodingCompletion: { (result) in

            switch result {
            case .success(let upload, _, _):

                upload.responseJSON { response in
                    self.delegate?.showSuccessAlert()
                    print(response.request)  // original URL request
                    print(response.response) // URL response
                    print(response.data)     // server data
                    print(response.result)   // result of response serialization
                    //                        self.showSuccesAlert()
                    self.removeImage("frame", fileExtension: "txt")
                    if let JSON = response.result.value {
                        print("JSON: \(JSON)")
                    }
                }

            case .failure(let encodingError):
                self.delegate?.showFailAlert()
                print(encodingError)
            }

    })
Run Code Online (Sandbox Code Playgroud)

这就是在Swift 3中实现上传方法的方法

ped*_*uan 36

例如,在Swift 3中使用Alamofire 4.0.0:

(确保你已准备好4.0.0,因为你好像尚未更新你的Alamofire)

Alamofire.upload(multipartFormData: { (multipartFormData) in
        // code
    }, to: URL, encodingCompletion: { (result) in
        // code
    })
Run Code Online (Sandbox Code Playgroud)

要么

Alamofire.upload(multipartFormData: { (multipartFormData) in
        // code
    }, with: URL, encodingCompletion: { (result) in
        // code
    })
Run Code Online (Sandbox Code Playgroud)

所以headers需要通过URL请求传递:

let URL = try! URLRequest(url: "http://example.com", method: .get, headers: headers)
Run Code Online (Sandbox Code Playgroud)

  • 这仍然不适合我.....其他人?不知道还能做什么. (2认同)

Mit*_*iya 7

尝试这个和url设置为@ pedrouan说.

Alamofire.upload(multipartFormData: { (multipartFormData) in
       multipartFormData.append(imageData, withName: "xyz", fileName: "file.jpeg", mimeType: "image/jpeg")
}, to: url) 
{ (result) in
      //result
}
Run Code Online (Sandbox Code Playgroud)