2016-12-09 6 views
0

Я пытаюсь преобразовать UIImage в строку кодировки Base64 с помощью swift 2.3, но закодированную строку не удается отправить на сервер.Преобразование UIImage в Base64 в swift 2.3

Сервер выдает ошибку, как «Исключение, возникшее при обработке исключения (ErrorException: iconv(): обнаружен незаконный символ в строке ввода)».

Могу ли я удалить специальные символы из закодированной строки или некоторые проблемы с моим исходным кодом. Как я уже упоминал свой исходный код ниже.

//*************** Image Picker function ********* // 
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 

    self.imageData = UIImageJPEGRepresentation(chosenImage, 0)   
    self.imageString = self.imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions()) 
    self.webServiceForShareData() 
    dismissViewControllerAnimated(true, completion: nil) 
}//******** Image Picker End **** // 



func webServiceForShareData() 
{ 
let allowedCharacters = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as! NSMutableCharacterSet 
    allowedCharacters.removeCharactersInString("+/=") 


    //****************** Alamofire Request *********** // 
    Alamofire.request(.POST,"URL",parameters:["pic":self.imageString != nil ? (self.imageString!.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters))! :"", "txt" : self.txtTest.text!, "on_twitter" : self.twitterSuccess, "on_facebook" : self.facebookSuccess],headers : ["Authorization":(NSUserDefaults.standardUserDefaults().objectForKey("oneSocialToken") as! String)]) 
     .responseJSON 
     { 
      response in 
      print(response.request) // original URL request 
      print(response.response) // URL response 
      print(response.data)  // server data 
      print(response.result) // result of response serializatio 
      if let JSON: NSDictionary = response.result.value as? NSDictionary 
      { 
       print(JSON) 
      } 
     } 
//*************** Alamofire Request End *************** // 

}// *** Function End 

ответ

0

От docs:

варианты
Маска, которая определяет варианты Base-64 кодирования данных. Возможные значения приведены в NSDataBase64EncodingOptions.

Так что вам нужно заменить ваш NSDataBase64EncodingOptions() с NSDataBase64EncodingOptions().[one_of_the_following_values]:

NSDataBase64Encoding64CharacterLineLength
Установить максимальную длину строки до 64 символов, после чего вставляется строка концовка.

NSDataBase64Encoding76CharacterLineLength
Установить максимальную длину строки до 76 символов, после чего вставляется строка окончание.

NSDataBase64EncodingEndLineWithCarriageReturn
Когда максимальная длина линии, указать, что строка, заканчивающаяся для вставки должна включать в себя возврат каретки.

NSDataBase64EncodingEndLineWithLineFeed
Когда максимальная длина линии, указать, что строка, заканчивающаяся для вставки должна включать строки.

Источник: Apple docs