Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отправка canvas-изображения на сервер (https://javascript.ru/forum/misc/31090-otpravka-canvas-izobrazheniya-na-server.html)

Greck 26.08.2012 22:18

Отправка canvas-изображения на сервер
 
Сейчас использую canvas.toDataURL() и отправляю ajax-ом как POST-поле и сохраняю с помощью php, но этот способ кушает много памяти, можно, конечно, отправлять небольшими объемами: по одному изображению или даже разбивать на части, но много кода, костылей и все-равно ощутимая дополнительная нагрузка на сервер.

Есть какой-то способ отправить ajax-ом изображение из canvas, что бы оно сохранилось стандартным средством, как из <input type="file"...?

Deff 26.08.2012 23:16

Greck,
http://habrahabr.ru/post/120917/
http://habrahabr.ru/post/132489/
http://habrahabr.ru/post/133351/

Greck 27.08.2012 10:00

Спасибо, http://habrahabr.ru/post/133351/ - помогла. Экземпляры с прототипом FormData принимают файлы в бинарном виде (bloab) и обрабатывают их соответствующим образом.

// В FF все просто: получаем бинарник из канваза одним методом
var bloab = cv.mozGetAsFile(name, 'image/jpeg');
// Создаем FormData
var form = new FormData();
// Добавляем бинарник
form.append('Filedata1', bloab);
// Отправляем форму ajax-запросом
$.ajax({
   url: 'http://exaple.com/upload.php',
   data: form,
   cache: false,
   contentType: false,
   processData: false,
   type: 'POST',
   success: function() {
      console.log('success');
   }
});


В Хроме, который мне был нужен, получить бинарник сложнее, но в указанной выше статье есть рабочий вариант. Все остальное - также.


Часовой пояс GMT +3, время: 13:17.