Как отправить на серевер картинку, если она base64?

Есть страница с формой. есть <input type="submit"> в котором выбирается картинка, далее, эта картинка кропается через плагин jquery, это плагин возвращает картинку в формате base64.
Как-то так:
2CiVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAgAElEQVR4Xoy9C6x2bVoe9Kz3sP

Как отправить на сервер и сохранить?
  • Вопрос задан
  • 2420 просмотров
Решения вопроса 1
kowap
@kowap Автор вопроса
Всем спасибо.
Я хотел получить вот такой ответ
$img= base64_decode('iVBORw0KGgoAAAA...');
$fpng = fopen("img.png", "w");
fwrite($fpng,$img);
fclose($fpng);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Peekab0o
@Peekab0o
Node.js developer
var image;

image = $('#image').attr('src').split(',');

$.ajax({
  type: "POST",
  dataType: "json",
  data: {
    image: image[1]
  },
  url: 'http://site.com',
  success: function(res) {
    return console.log(res);
  }
});

На сервере принять через $_POST["image"]
Ответ написан
bootd
@bootd
Гугли и ты откроешь врата знаний!
Скрытый input в значение которого вставлять код картинки!
Потом сохраняете полученную строку в бд, а дальше просто выводите так
<img src="data:image/png;base64,<?img?>">
Где переменная $img - это код картинки. Но ваш плагин как-то не правильно переводит картинку или вы скинули не весь код. Где указание формата вначале, например так: data:image/png;base64,?
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
что мы имеем - мы имеем картинку закодированную в base64. Что с ней делать? Логика подсказывает что мы должны сделать base64decode и сохранить этот кусок бинарных данных в файл (jpg/png - зависит от того во что этот плагин сохраняет).
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
Что-то в алгоритме загрузки кропнутого изображения не так.
Должно быть:

1) <input type="file"... откуда можно взять переменную для передачи файла
2) плагин для кропа, который должен вернуть координаты выделения

Эти данные и отправляются на сервер.

А чтобы кропать можно было по изображению без загрузки на сервер - javascript-овый FileReader в помощь.
Вот пример (немного говнокода, но в целом понятно):
- frontend: с 215-й строки https://github.com/kryoz/sociochat/blob/master/www...
- backend: https://github.com/kryoz/sociochat/blob/master/www...

Ваш же подход связан с гемором разбора данных на серверной стороне. Лучше использовать штатные инструменты.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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