2013-06-21 13 views
52

natknąłem this answer który jest genialny:Korzystanie wejście formularz aby uzyskać dostęp do kamery i natychmiast przesyłać zdjęcia za pomocą aplikacji internetowej

w iPhone iOS6 i z Androidem ICS r HTML5 ma następującą znacznik, który pozwala na wykonanie zdjęcia z urządzenia:

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

Capture może przyjmować wartości takie jak kamera, kamera i audio.

Czy można zrobić to o jeden krok dalej, używając ajaxowego rodzaju, aby natychmiast przesłać zdjęcie po jego zrobieniu?

Na przykład za pomocą mojego telefonu, po dotknięciu wejścia, otwiera się aparat, który natychmiast pozwala mi zrobić zdjęcie i zapisać je. Po zapisaniu go w kamerze jest on następnie wyświetlany jako przycisk do przesłania.

Co by było, gdyby to zdjęcie zostało natychmiast przesłane zamiast czekać, aż użytkownik kliknie przycisk Prześlij w formularzu?

+1

Co już próbowałeś? Co Cię zaskoczyło? – Marcin

+0

Jeśli interesują Cię kontrole innych firm, możesz rozważyć użycie Kendo http://demos.kendoui.com/web/upload/api.html – HaBo

+1

@Marcin Nigdy nie byłam mocna w javascript, więc nie byłam pewna nawet spróbować. To, co próbuję skopiować, to natywna funkcja aplikacji, w której zdjęcie jest natychmiast przesyłane do serwera usług lub zdalnego bez dodatkowego kroku po zrobieniu zdjęcia aparatem. – micah

Odpowiedz

71

To naprawdę proste, wystarczy wysłać plik za pomocą żądania XHR w module obsługi wejścia pliku wejściowego.

<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

Dziękuję za tę odpowiedź. Tak więc ten detektor zdarzeń obserwuje wejście # myFileInput w celu uzyskania zmiany, wiedząc, kiedy zdjęcie czeka w kolejce do przesłania? A potem przypuszczam, że wykona on funkcję sendPic z objtością FormData automatycznie przesyłając zdjęcie? Rozumiem, co XHR ma na bardzo wysokim poziomie. Czy to rozumiem? – micah

+0

Detektor zdarzeń jest wywoływany po wybraniu pliku przez użytkownika. –

+0

Tak więc detektor zdarzeń monituje 'sendPic()', aby natychmiast przesłać plik po zrobieniu zdjęcia przez kamerę? – micah

Powiązane problemy