2016-09-22 53 views
4

我已完成图像上传,并成功上传到服务器上使用下面的方法。Swift 3 - Alamofilre 4.0多部分图像上传与进展

现在我想上传图片的进展,所以任何人都可以告诉我该怎么做?我到处找到,但没有得到正确的解决方案。

代码图片上传没有它的进度:

@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) 
     } 

    } 

} 

回答

14

终于得到了解决搜索了很多了。我们只需要在结果块中放置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) 
     } 

    }