我正在将JPEG图像编码为Base64,以便使用Alamofire发送到我的应用程序后端。
当我使用Charles代理检查发送的字符串时,我发现编码的字符串逃逸了所有斜杠(
/
)带反斜杠(成为
\/
)。例如,字符串
data:image/jpeg;base64,
开始时变成:
data:image\/jpeg;base64,
与Base64编码字符串中的所有斜杠一样,这使得编码字符串不可用。
这是我用来编码图像的代码。变量imageBase64接收带有转义斜杠的字符串。
if let image = image {
let croppedImage = image.af_imageAspectScaled(toFill: CGSize(width: 500, height: 500))
if let imageData = UIImageJPEGRepresentation(croppedImage, 0.8) {
let imageBase64 = "data:image/jpeg;base64,\(imageData.base64EncodedString())"
base64dict["base64"] = imageBase64 as AnyObject
bodyParams["AVATAR"] = base64dict as AnyObject
} else {
base64dict["base64"] = "null" as AnyObject
bodyParams["AVATAR"] = base64dict as AnyObject
}
}
当我使用Alamofire将imageData字符串发送到后端时,请求正文中发送的json如下所示:
{
"AVATAR": {
"base64": "data:image\/jpeg;base64,\/9j\/4AAQSkZJRgABAQAAkACQAAD\/4QC..."
}
}
所有的斜杠都逃脱了。
我用于发出请求的代码如下:
Alamofire.request(finalURL,
method: method,
parameters: bodyParams,
encoding: JSONEncoding.default,
headers: ["Content-Type": "application/json"])
.responseJSON { response in
}