Swift 3 – Alamofilre 4.0多部分图像上传与进展

我已经完成了图像上传,并成功上传到服务器上使用下面的方法。

现在我想上传图像的进度,所以任何人都可以告诉我该怎么做? 我到处find,但没有得到正确的解决scheme。

没有进展的图片上传代码:

@IBAction func uploadClick(_ sender: AnyObject) { // define parameters let parameters = [ "file_name": "swift_file.jpeg" ] Alamofire.upload(multipartFormData: { (multipartFormData) in multipartFormData.append(UIImageJPEGRepresentation(self.photoImageView.image!, 0.5)!, withName: "photo_path", fileName: "swift_file.jpeg", mimeType: "image/jpeg") for (key, value) in parameters { multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key) } }, to:"http://server1/upload_img.php") { (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) } } } 

终于find了很多的解决scheme。 我们只需要将uploadProgress块放在结果块内。

 Alamofire.upload(multipartFormData: { (multipartFormData) in multipartFormData.append(UIImageJPEGRepresentation(self.photoImageView.image!, 0.5)!, withName: "photo_path", fileName: "swift_file.jpeg", mimeType: "image/jpeg") for (key, value) in parameters { multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key) } }, to:"http://server1/upload_img.php") { (result) in switch result { case .success(let upload, _, _): upload.uploadProgress(closure: { (Progress) in print("Upload Progress: \(Progress.fractionCompleted)") }) 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) } }