Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Загрузка картинки из вебкамеры на сервер (https://javascript.ru/forum/events/71242-zagruzka-kartinki-iz-vebkamery-na-server.html)

iNfantry 03.11.2017 19:07

Загрузка картинки из вебкамеры на сервер
 
Подскажите пожалуйста, допустим я получил картинку с вебкамеры и она без проблем вставляется в документ с помощью кода
var data = canvas.toDataURL('image/jpeg');
document.getElementById('photo').setAttribute('src', data);

Как я могу ее загрузить на сервер? Тоесть с помощью метода jQuery $.post или самого объекта xmlhttprequest, не пойму как мне ее запихать в параметр и зааплоадить, сама картинка получается с помощью механизма getusermedia и canvas, с этим проблем нет.

Alexandroppolus 03.11.2017 19:16

У канвы ещё есть метод toBlob

iNfantry 03.11.2017 19:28

Да, но как именно загрузить его на сервер? Чтобы в пост запросе он был именно файлом со всеми boundary и тд а не просто аргументом в post data.

laimas 03.11.2017 19:34

Объект FormData() и его метод .append()

iNfantry 03.11.2017 19:43

Цитата:

Сообщение от laimas (Сообщение 469140)
Объект FormData() и его метод .append()

А можно пример того как в этот метод вставить именно файл из канваса?
append('pic', canvas.toDataURL(\'image/jpeg\'));
или append('pic', canvas.toBlob());
или как? Просто насколько я знаю браузер запрещает задавать значение элементу инпут тип=файл программно. Вобщем-то весь вопрос именно в том, как зааплоадить именно динамически созданный файл.

Alexandroppolus 03.11.2017 19:50

iNfantry,
почему ты так упрямствуешь в своем нежелании глянуть документацию по FormData?

а toBlob асинхронный, с колбеком. Тоже не мешало бы ознакомиться.

laimas 03.11.2017 19:51

Цитата:

Сообщение от iNfantry
Просто насколько я знаю браузер запрещает задавать значение элементу инпут тип=файл программно


Не надо ничего создавать, добавите объекту пару ключ => значение.

Сперва нужно создать объект FormData(). Все о нем здесь.

iNfantry 03.11.2017 19:53

В качестве "значение" подставлять урл или блоб?

laimas 03.11.2017 19:55

Цитата:

Сообщение от iNfantry
В качестве "значение" подставлять урл или блоб?

А какой у canvas URL?

Alexandroppolus 03.11.2017 19:56

Цитата:

Сообщение от iNfantry
В качестве "значение" подставлять урл или блоб?

разумеется, блоб.

или, по твоему, упоминание тут метода toBlob - просто совпадение? :)

iNfantry 03.11.2017 19:58

Собсна меня бы устроил простой ответ "append blob", это и пытался выяснить, спасибо)

Alexandroppolus 03.11.2017 19:59

iNfantry,
не забудь про третий параметр!

iNfantry 03.11.2017 20:05

Забыл бы)

iNfantry 04.11.2017 16:06

Я конешно извиняюсь, но что-то я не до конца разобрался.
TypeError: Argument 2 of FormData.append is not an object.
Это выдается если в аппенд передать canvas.toDataURL('image/jpeg') или canvas.toBlob(function(blob){}, 'image/jpeg', 0.95). Вопрос остается актуальным, как мне загрузить на сервер динамически созданное с помощью канвас фото, находящееся в атрибуте src тэга img? Как динамически загрузить его на сервер? Ну или хотябы как мне подставить значение из img src в элемент input type=file, это же поулчается обход политики безопасности браузера или я не прав?

iNfantry 04.11.2017 16:34

Ха, всетаки разобрался, просто пост запрос надо делать в коллбаке toBlob(blob) где тот самый blob и добавляется в append, если кому-то это интересно)


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