繁体   English   中英

Swift - 将base64编码图像上传到php并显示图像

[英]Swift - uploading base64 encoded image to php and displaying the image

目前,我正在尝试将base64编码的图像上传到php服务器,然后将该base64字符串存储在MySQL数据库中。 目前,代码正在上传数据并将其存储到MySQL数据库中。 但是,当我尝试通过指定用于检索图像的URL来检索图像时,会显示带有问号的缺失图像链接。 我不知道为什么会发生这种情况,因为上传和显示base64编码的图像似乎与我的Android应用程序运行良好。

这是我用来编码和上传到服务器的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"]     . '" />';
     }

在将其发布到PHP服务器之前,我能够通过百分比编码base64字符串来实现这一点。 希望这有助于其他人。

在play2win的自我回答的背面提供一些有用的Swift 3.0代码:

let data:Data = UIImagePNGRepresentation(myUIImageView.image!)!
let base64String:String = data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
let imageStr:String = base64String.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!

你应该首先将你的base64图像解码为数据并保存在服务器端,这样我们就可以获得你所希望的响应的保存位置路径。希望这有助于你......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM