目前,我正在尝试上传一个base64编码的图像到一个PHP服务器,该服务器然后将base64字符串存储在MySQL数据库中。目前,代码正在上传数据并将其存储到MySQL数据库中。然而,当我尝试通过指定用于检索图像的URL来检索图像时,会显示一个带有问号的丢失图像链接。我不知道为什么会发生这种情况,因为使用我的Android应用程序上传和显示base64编码的图像似乎都正常工作。
以下是我正在使用的Swift代码来编码和上传到服务器:
let image: UIImage = imgProfilePic.image!
let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.3, 0.3))
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
image.drawInRect(CGRect(origin: CGPointZero, size: size))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
var imageData = UIImageJPEGRepresentation(scaledImage, 0.9)
var base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) // encode the image
var cd = CoreDataUser(pstrContext: "this")
var params = "strUsername=" + cd.getUsername()
params = params + "&strPassword=" + cd.getPassword()
params = params + "&blbProfilePic=" + base64String
以下是 PHP 代码,用于解码并在浏览器中显示 base64 字符串。这对于由我的 Android 代码上传的图像运作良好,但对于由我的 Swift 代码上传的图像,它只显示一个损坏的图像链接。
if ($rows) {
foreach ($rows as $row) {
$data = base64_decode($row["fblbProfilePic"]);
$image = imagecreatefromstring($data);
header('Content-Type: Image/jpeg');
imagejpeg($image);
//file_put_contents("test.jpg", $data);
//var_dump($data);
//echo base64_decode($row["fblbPicture"]);
/ /echo '<img src="data:image/jpg;base64,' . $row["fblbPicture"] . '" />';
}