Как получить прогресс загрузки изображения base64 в Alamofire? - PullRequest
0 голосов
/ 09 октября 2018

Есть ли способ опубликовать JSON с прогрессом в alamofire?Что мне нужно сделать, у меня есть JSON, который имеет строку изображения base64 и некоторые другие параметры при запросе JSON. Мне нужно показать Progress конечному пользователю, поэтому у кого-нибудь есть идеи, как это сделать в Alamofire?

Я следовалссылка ниже, но она дает мне синтаксическую ошибку в Alamofire?

POST-запрос Alamofire с прогрессом

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

Это дает мне ошибку ниже

Невозможно вызвать 'upload' со списком аргументов типа '(NSMutableURLRequet, Data)

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете использовать код ниже, если хотите показать прогресс:

 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()
            }
        }
    }
0 голосов
/ 09 октября 2018

Как вы указали, вы можете использовать Alamofire для загрузки файла или изображения, не конвертируя его в Base64, используя MultipartFormData и отслеживая прогресс.Включите любую синтаксическую ошибку, вы можете рассказать нам больше об этом или вернуться к документации.

...