Використовуючи введення форми для доступу до камери та негайного завантаження фотографій за допомогою веб-програми


88

Я натрапив на цю блискучу відповідь:

У iPhone iOS6 та на базі Android ICS HTML5 має такий тег, який дозволяє робити знімки з вашого пристрою:

    <input type="file" accept="image/*" capture="camera">

Зйомка може приймати такі значення, як камера, відеокамера та аудіо.

Чи можна зробити цей крок далі, використовуючи якийсь ajax, щоб негайно завантажити фотографію після її зйомки?

Наприклад, використовуючи мій телефон, коли я натискаю на вхід, він відкриває камеру, яка негайно дозволить мені зробити фотографію та зберегти її. Коли я зберігаю його на камеру, він потім відображається кнопкою введення як файл для завантаження.

Що потрібно для того, щоб цю фотографію було негайно завантажено, а не чекати, поки користувач натисне кнопку «Надіслати» у формі?


1
Що ви вже пробували? Що ти тупив?
Марсін

Якщо ви зацікавлені в сторонніх елементах керування, ви можете розглянути демо
версію

1
@Marcin Я ніколи не був сильним з javascript, тому я не був впевнений, що навіть спробувати. Те, що я намагаюся відтворити, це функція власного додатку, де фотографія негайно завантажується на сервіс або віддалений сервер без додаткових кроків після фотографування камерою.
micah

Відповіді:


103

Зробити це дуже просто, просто надішліть файл через запит XHR всередині обробника onchange вводу файлу.

<input id="myFileInput" type="file" accept="image/*;capture=camera">

var myInput = document.getElementById('myFileInput');

function sendPic() {
    var file = myInput.files[0];

    // Send file here either by adding it to a `FormData` object 
    // and sending that via XHR, or by simply passing the file into 
    // the `send` method of an XHR instance.
}

myInput.addEventListener('change', sendPic, false);

1
Дякую за цю відповідь. Отже, слухач цієї події спостерігає за входом # myFileInput для зміни, знаючи, коли фотографія знаходиться в черзі для завантаження? І тоді, я гадаю, він буде виконувати функцію sendPic з автоматичною завантаженням фотографії об’єкта FormData? Я розумію, що таке XHR на дуже високому рівні. Я правильно зрозумів?
micah

Прослуховувач подій викликається після того, як користувач вибере файл.
Ray Nicholus

Отже, прослуховувач подій пропонує sendPic()спочатку завантажити файл після того, як камера робить фото?
micah

1
Чи можете ви вказати мені в правильному напрямку, щоб дізнатися, як надіслати форму через XHR?
iluvpinkerton

3
@iluvpinkerton Звичайно, використовуйте (або подивіться) Fine Uploader або ajax-форму . Застереження - я розробник обох бібліотек.
Ray Nicholus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.