@michellie

Как отправить длинный base64 POST?

Отправляю в POST base64 изображение с 1 сервера и сохраняю в файл на втором, работает только с короткими строками (маленькими изображениями)

Apache

в настройках php :
upload_max_filesize 50M
post_max_size 50M
(POST запросы намного меньше)

отправляю с 1 сервера:

$src = "base64 image";

function imgAPI($data)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://pf.nf/api/v1');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

    $response = curl_exec($curl);
    return json_decode($response);
    curl_close($curl);
}

$data = array(
          'img' => $src,
          'path' => '../img/profile/'
        );

$response = imgAPI($data);


принимаю с другого сервера:

define('UPLOAD_DIR', $_POST['path']);
		$img = $_POST['img'];
		$img = str_replace('data:image/png;base64,', '', $img);
		$img = str_replace(' ', '+', $img);
		$data = base64_decode($img);
		$file = UPLOAD_DIR . uniqid() . '.png';
		$success = file_put_contents($file, $data);

		$callback['success'] = true;
        print_r(json_encode($callback));
  • Вопрос задан
  • 778 просмотров
Пригласить эксперта
Ответы на вопрос 1
А ошибка какая-то есть? В явном виде или в логах веб-сервера/фреймворков?
План по локализации проблемы:
1) Попробуйте отправить такой же curl, но с консоли. Так вы исключите проблему в скрипте-отправителе.
2) Скрипт-получатель замените на что-то простое, а-ля `echo $_POST['img'];`. Ответ выводится для всех отправок? Так вы исключите проблему в инфраструктуре (настройках пхп и веб-сервера) на приём данных.
3) Если оба пункт выше не показали проблем и всё стабильно доходит, значит проблема в обработке полученной картинки. Тут уже можно экспериментировать, комментируя и возвращая строки последовательно.

Но вообще кажется, что сама обработка данных неверна. По идее это должна быть обычная обработка формы, без плясок вокруг str_replace'ов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы