Загрузка изображения в кодировке Base64 на сервер php

как загрузить закодированное изображение 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);
?>

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

Markus Zeller 24.08.2018 14:48

Потрясающе, что помогло !!! Спасибо @MarkusZeller

kahlflekzy 24.08.2018 15:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Посмотрите на различия. Иногда вам нужно заменить пробелы на плюсы.

$binary = base64_decode(str_replace(" ", "+", $_POST['image']));

Другие вопросы по теме