ios — Swift — загрузка изображения в кодировке base64 в php и отображение изображения

В настоящее время я пытаюсь загрузить изображение в кодировке 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"]     . '" />';
}

4

Решение

Я смог заставить это работать с помощью процентного кодирования строки base64 перед отправкой на сервер PHP. Надеюсь, это поможет кому-то еще.

2

Другие решения

Просто предоставьте полезный код Swift 3.0 здесь, на обратной стороне самоответа play2win:

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

Сначала вы должны декодировать ваше изображение base64 в данные и сохранить на стороне сервера, чтобы мы в ответ получили тот путь к вашему сохраненному местоположению, который вы хотели.
надеюсь, это поможет вам …

0
По вопросам рекламы [email protected]