如何在Alamofire中上传base64图像取得进展?

时间:2018-10-09 07:13:25

标签: swift alamofire

有什么方法可以在alamofire中发布带有进度的JSON吗?我需要做些什么,我需要在请求JSON时同时具有base64图像字符串和一些其他参数的JSON,所以我需要向最终用户显示Progress,所以任何人都知道如何在Alamofire中进行操作?

我遵循了以下链接,但是它给我Alamofire中的语法错误吗?

Alamofire POST request with progress

    let parameters: [String: AnyObject] = ["key": "value" as AnyObject]
    let mutableURLRequest = NSMutableURLRequest(url: URL(string: "url goes here")!)
    mutableURLRequest.httpMethod = "POST"

    let encodedURLRequest = try! Alamofire.URLEncoding.default.encode(mutableURLRequest as! URLRequestConvertible, with: parameters)
    let data = encodedURLRequest.httpBody!

    Alamofire.upload(mutableURLRequest, data)
        .progress { _, totalBytesRead, totalBytesExpectedToRead in
            print("ENTER .PROGRESSS")
            print("\(totalBytesRead) of \(totalBytesExpectedToRead)")
        }
        .responseJSON { _, _, mydata, _ in
            print(mydata)
    }

它给我下面的错误

无法使用类型为((NSMutableURLRequet,Data))的参数列表调用'upload'

2 个答案:

答案 0 :(得分:0)

如您所指出的,您可以使用Alamofire上载文件或图像,而无需将其转换为Base64,使用MultipartFormData并跟踪进度。 如果出现语法错误,您可以向我们详细说明或返回文档。

答案 1 :(得分:0)

如果要显示进度状态,则可以使用以下代码:

 let binaryImageData = base64EncodeImage(image)
 SVProgressHUD.show() //use any progress hud
  let parameters : [String:Any] = [
            "Name" : "UserProfilePhoto",
            "Body": binaryImageData,
            "parentId": userId

   ]
   let header = ["content-type" : "application/json", "Authorization": "your token here"]
   var imageURL: URL {
            return URL(string: "Your UrlString here")
        }
   Alamofire.request(imageURL, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: header).responseJSON {
            response in

            if (response.result.isSuccess){
                SVProgressHUD.dismiss()
                let result = response.result.value as? NSDictionary
            }
            else{
                SVProgressHUD.dismiss()
            }
        }
    }