无法将 base64 图像从 WKWebView 发送到页面上的 JavaScript
Trouble sending base64 image from WKWebView to JavaScript on page
我正在尝试将 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 之前对字符串进行编码,如下所示:
let encodedString: String = dataImage.addingPercentEncoding(withAllowedCharacters: .alphanumerics) ?? ""
在Javascript代码中,在添加到图像源之前,
var originalImageData = decodeURIComponent(encodedImageDataString)
P.S:希望你有这种格式的带有前缀的最终图像数据
数据:;base64,例如
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAAXNSR0IArs4c6QAA...
我遇到了同样的问题,但通过将 base64EncodedStringWithOptions 参数设置为 0 而不是 'lineLength64Characters' 设法让它工作。我认为换行符是问题所在,“0”将其设置为无换行符。
我正在尝试将 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 之前对字符串进行编码,如下所示:
let encodedString: String = dataImage.addingPercentEncoding(withAllowedCharacters: .alphanumerics) ?? ""
在Javascript代码中,在添加到图像源之前,
var originalImageData = decodeURIComponent(encodedImageDataString)
P.S:希望你有这种格式的带有前缀的最终图像数据 数据:;base64,例如
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAAXNSR0IArs4c6QAA...
我遇到了同样的问题,但通过将 base64EncodedStringWithOptions 参数设置为 0 而不是 'lineLength64Characters' 设法让它工作。我认为换行符是问题所在,“0”将其设置为无换行符。