2017-10-22 19 views
1

iOSのUIImageのBase64表現をWeb Viewに送信しようとしていますが、JavaScriptで文字列がエスケープされているエラーが発生していると思います私はそれをどのように扱うべきかについてはあまりよく分かりません。これは私が遠くに持っているものです...WKWebViewからJavaScriptへのbase64画像の送信に問題があります

func imagePickerController(_ picker: UIImagePickerController, 
          didFinishPickingMediaWithInfo info: [String : Any]) 
{ 
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 

    let thumb = chosenImage.resized(toWidth: 72.0) 

    let imageData:NSData = UIImagePNGRepresentation(thumb!)! as NSData 

    let dataImage:String = imageData.base64EncodedString(options: .lineLength64Characters) 

    webView?.evaluateJavaScript("window.settings.setImageBase64FromiOS('\(dataImage)');") { (result, error) in 
     if error != nil { 
      print(error!) 
     } else { 
      print("Success") 
     } 
    } 
    dismiss(animated:true, completion: nil) //5 

} 

このエラーはコンソールに記録され続けます。

WKJavaScriptExceptionMessage=SyntaxError: Unexpected EOF

答えて

2

私も同じ問題が発生したため、私は次のようにJavaScriptに送信する前に、文字列をエンコードする試み:JavaScriptコードで

let encodedString: String = dataImage.addingPercentEncoding(withAllowedCharacters: .alphanumerics) ?? "" 

を、画像ソースに追加する前に、

var originalImageData = decodeURIComponent(encodedImageDataString) 

PS:このフォーマットの接頭辞を持つ最終的な画像データをお持ちでしたら data:; base64、例えば

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAAXNSR0IArs4c6QAA... 
関連する問題