как загрузить закодированное изображение Base64 на сервер PHP с помощью HttpURLConnection? Все ответы, которые я видел до сих пор, основаны на HttpClient, которого больше не существует. У меня есть библиотека httprequest.java, которая отправляет почтовый запрос на сервер, у меня проблема в том, что строка изображения на server-side всегда отличается от той, которую я отправляю.
Пока это мой код.
HttpRequest request = new HttpRequest(Konstants.address+Konstants.save_image);
request.prepare(HttpRequest.Method.POST);
String encodedImage = Base64.encodeToString(image, Base64.URL_SAFE);
//image is a byte[] with image data
HashMap<String, String>map = new HashMap<>();
map.put("username",username);
map.put("image", encodedImage);
Log.d("IMAGE-DATA", encodedImage);
request.withData(map);
JSONObject object = request.sendAndReadJSON();
code = object.getInt("response_code");
if (code == 0)
flag = Boolean.FALSE;
String s = object.getString("response_message");
Log.d("SERVER-REPLY", s);
//encodedImage and s are different
и код PHP ниже:
<?php
if (!$_SERVER['REQUEST_METHOD']=='POST'){
$response["response_code"] = 0;
$response["response_message"] = "INVALID REQUEST";
die(json_encode($response));
}
if (empty($_POST)) {
$response["response_code"] = 0;
$response["response_message"] = "One or both of the fields are empty .";
die(json_encode($response));
}
$username1 = urldecode($_POST['username']);
$data = $_POST['image'];
$binary = base64_decode($data);
list($path, $tmp) = explode(".", $username1);
$success = file_put_contents("./images/$path.png", $binary);
if ($success){
$response["response_message"]=$data;
$response["response_code"] = 1;
}else{
$response["response_message"] = "failure";
$response["response_code"] = 0;
}
echo json_encode($response);
?>
Потрясающе, что помогло !!! Спасибо @MarkusZeller






Посмотрите на различия. Иногда вам нужно заменить пробелы на плюсы.
$binary = base64_decode(str_replace(" ", "+", $_POST['image']));
Посмотрите на различия. Иногда вам нужно заменить пробелы на плюсы.
$binary = base64_decode(str_replace(" ", "+", $_POST['image']));.