получить данные json через $ _POST из почтового запроса alamofire swift3?

ребята, у меня проблема с отправкой данных json через alamofire 4 с помощью swift3, а также проблема получения данных json на стороне сервера XAMPP с использованием php.
Мой код swift 3 действительно запускал скрипт php на XAMPP, но почему-то я не могу получить его через переменную $ _POST в php
Вот мой код,

func uploadImage(image: UIImage){
//Now use image to create into NSData format
let imageData:NSData = UIImagePNGRepresentation(image)! as NSData
//convert the nsdata to base64 encoded string
let strBase64:String = imageData.base64EncodedString(options: .lineLength64Characters)
// let parameters = ["image": strBase64] as Dictionary
let parameters = ["image": strBase64]
print(strBase64)
Alamofire.request("http://localhost/Test/api/UploadPhoto.php",method: .post, parameters: parameters, encoding: JSONEncoding.default).response { response in
print(response)
}
}

Вот мой код на стороне сервера (скрипт был вызван вызовом от alamofire, но почему-то я просто не могу получить данные через вызов $ _POST [«image»])

    <?php
//scripts below did get triggered, but can't get the json data through          calling $_POST["image"];
$imageString = $_POST["image"];
$filename_path = md5(time().uniqid()).".png";
$data = base64_decode($imageString);
file_put_contents('../AllImages/'.$filename_path, $data);
echo json_encode($_POST["image"]);
?>

если возможно, пожалуйста, помогите мне, я боролся почти неделю, но не могу найти много подсказок
Спасибо

1

Решение

я нашел способ решить эту проблему, в основном, я использовал urlsession.shared.datatask, чтобы помочь мне вместо alamofire с запросом поста,
вот мой код стороны IOS

     func uploadImage(image: UIImage, completionHandler: @escaping (String) ->()){

// Now use image to create into NSData format
let imageData:NSData = UIImagePNGRepresentation(image)! as NSData

//convert the nsdata to base64 encoded string

let strBase64:String = imageData.base64EncodedString(options: .lineLength64Characters)
// prepare json data
let json: [String: Any] = ["image": strBase64]

let jsonData = try? JSONSerialization.data(withJSONObject: json)

// create post request
let url = URL(string: "http://10.10.10.72/Test/api/UploadPhoto.php")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
// insert json data to the request
request.httpBody = jsonData

let task = URLSession.shared.dataTask(with: request) { data, response, error in

do {
guard let data = data else {
throw JSONError.NoData
}
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject] else {
throw JSONError.ConversionFailed
}

completionHandler(json["sign"] as! String)

} catch let error as JSONError {
print(error.rawValue)
} catch let error as NSError {
print(error.debugDescription)
}

}
task.resume()
}

я использовал словарь для хранения своих данных и преобразовал их в формат данных json для отправки на сервер

     let json: [String: Any] = ["image": strBase64]
let jsonData = try? JSONSerialization.data(withJSONObject: json)

Затем на стороне PHP, я получил его с помощью

    $entityBody = file_get_contents('php://input');

, Затем я декодировал из JSON, который произвел мне массив, и я могу получить доступ к своему значению, ссылаясь на изображение, так что полная сторона PHP кода, как показано ниже:

    <?php
//get the posted json data
$entityBody = file_get_contents('php://input');
//decode the json data
$decoded = json_decode($entityBody, TRUE);
$imageString = $decoded["image"];
//create a unique name for the image
$filename_path = md5(time().uniqid()).".png";
//converted the image string back to image
$data = base64_decode($imageString);
//put it on the desired location
file_put_contents('../AllImages/uploads/signature/'.$filename_path, $data);
$response = array();
//create the response
$response['sign'] = '../AllImages/uploads/signature/'.$filename_path;
echo json_encode($response);
?>

обратите внимание, я снова кодирую данные json для отправки обратно в виде ответа от php на мою сторону ios, и вам нужно декодировать ответ от json, поэтому полная идея заключается в том, что если вы кодируете значение в json с одной стороны, вам нужно расшифровать его с другой стороны, чтобы правильно получить доступ к значению, поправьте меня, если я ошибаюсь, я рад, что мое приложение запущено и теперь работает со всеми запросами: D

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector