Здесь я должен отправить изображение в кодировке base64 на сервер. Ниже мой код, который я использую:

 func post_request_image(api:String){

    if (imageview.image == nil)
    {
        return
    }
     let image_data = UIImageJPEGRepresentation(imageview.image!, 1.0)

    if(image_data == nil)
    {
        return
    }

    loader.showLoadingAlert(view: self.view, title: "")
    var web_apis_3 = api
    // print(web_apis_3)
    var request = URLRequest(url: URL(string: web_apis_3)!)
     request.httpMethod = "POST"
     do {
        request.httpBody = 
         image_data?.base64EncodedString()

    } catch let error {
        print(error.localizedDescription)
    }
    // let content = String(data: json!, encoding: 
         String.Encoding.utf8)

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 
            print("error=\(error)")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")

        }

}

Но это дает мне эту ошибку:

не может присвоить значение типа String типу Data

Как я могу это решить?

0
asif saifi 15 Фев 2018 в 08:12

1 ответ

Лучший ответ

Если сервер ожидает строку:

let image = UIImage(named: "sample")
guard let imgData = UIImagePNGRepresentation(image) else { return }
let base64String = imgData.base64EncodedString(options: .lineLength64Characters)

Затем отправьте base64String на сервер любым необходимым способом.

Мне нужно было представить:

let parameters: [String: String] = [
    "image": base64String
]

Поскольку вам нужны данные, вы сможете отправить imgData

1
Pranav Kasetti 22 Авг 2020 в 19:14