Отправка canvas-изображения на сервер
Сейчас использую canvas.toDataURL() и отправляю ajax-ом как POST-поле и сохраняю с помощью php, но этот способ кушает много памяти, можно, конечно, отправлять небольшими объемами: по одному изображению или даже разбивать на части, но много кода, костылей и все-равно ощутимая дополнительная нагрузка на сервер.
Есть какой-то способ отправить ajax-ом изображение из canvas, что бы оно сохранилось стандартным средством, как из <input type="file"...? |
|
Спасибо, 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, время: 05:00. |