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

目前,我试图将一个base64编码的图像上传到一个PHP服务器,然后将base64string存储在MySQL数据库中。 目前,代码正在上传数据并将其存储到MySQL数据库中。 但是,当我尝试通过指定用于检索图像的URL来检索图像时,会显示一个缺less的带有问号的图像链接。 我不知道为什么会发生这种情况,因为上传和显示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 

这里是base64string被解码并显示在浏览器中的PHP代码。 这对于我的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服务器之前,我可以通过编码base64string的百分比来得到这个工作。 希望这可以帮助别人。

你应该首先解码你的base64图像到数据并保存在服务器端,以便我们将得到您所需的保存的位置path作为回应你希望这可以帮助你…

只需要在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)!