【问题标题】:Trouble sending base64 image from WKWebView to JavaScript on page无法将 base64 图像从 WKWebView 发送到页面上的 JavaScript
【发布时间】:2018-04-03 06:05:42
【问题描述】:

我正在尝试将 iOS 中 UIImage 的 Base64 表示形式发送到 Web 视图,并且我认为我遇到了一个错误,即由于特殊字符,字符串在 JavaScript 中被转义,但我并不完全正确确定如何处理。这就是我要走的路……

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

【问题讨论】:

    标签: javascript ios swift base64 wkwebview


    【解决方案1】:

    我遇到了同样的问题,但设法通过将 base64EncodedStringWithOptions 参数设置为 0 而不是“lineLength64Characters”来使其工作。我认为换行符是问题所在,'0' 将其设置为无换行符。

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题,我尝试在发送到javascript之前对字符串进行编码,如下所示:

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

      在 Javascript 代码中,在添加到图像源之前,

      var originalImageData = decodeURIComponent(encodedImageDataString)
      

      P.S:希望你有最终的图像数据,前缀是这种格式 data:;base64,例如。

      data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAAXNSR0IArs4c6QAA...
      

      【讨论】:

        猜你喜欢
        • 2018-09-01
        • 2020-07-20
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        相关资源
        最近更新 更多