2013-06-21 6 views
52

mi sono imbattuto in this answer che è brillante:Uso del metodo di modulo per accedere alla fotocamera e subito caricare le foto tramite web app

In iPhone iOS6 e da Android ICS in poi, HTML5 ha il tag seguente, che ti permette di prendere immagini dal tuo dispositivo:

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

Cattura può prendere valori come fotocamera, videocamera e audio.

È possibile fare un ulteriore passo avanti utilizzando una jax di qualche tipo per caricare immediatamente la foto dopo l'acquisizione?

Ad esempio, utilizzando il mio telefono, dopo aver toccato l'ingresso, si apre la fotocamera che immediatamente mi consentirà di scattare una foto e salvarla. Quando lo salvo sulla fotocamera, viene elencato dal pulsante di input come file da caricare.

Cosa servirebbe per caricare immediatamente questa foto anziché attendere che l'utente faccia clic sul pulsante Invia del modulo?

+1

Cosa hai già provato? Cosa hai stumped? – Marcin

+0

Se sei interessato ai controlli di terze parti, puoi prendere in considerazione l'interfaccia utente di Kendo http://demos.kendoui.com/web/upload/api.html – HaBo

+1

@Marcin Non sono mai stato forte con javascript quindi non ero sicuro di cosa perfino provare Quello che sto tentando di replicare è la funzione di app nativa in cui la foto viene immediatamente caricata sul server di servizio o remoto senza un ulteriore passaggio dopo aver scattato una foto con la fotocamera. – micah

risposta

71

È davvero facile farlo, è sufficiente inviare il file tramite una richiesta XHR all'interno del gestore onchange dell'ingresso file.

<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

Grazie per questa risposta. Quindi questo listener di eventi sta guardando l'input # myFileInput per un cambiamento, sapendo quando una foto viene accodata per essere caricata? E quindi suppongo che eseguirà la funzione sendPic con objct FormData che carica automaticamente la foto? Capisco cosa XHR è ad un livello molto alto. Ho capito bene? – micah

+0

Il listener di eventi viene richiamato dopo che l'utente ha selezionato un file. –

+0

Quindi il listener di eventi richiede 'sendPic()' per caricare immediatamente il file dopo che la fotocamera ha scattato la foto? – micah

Problemi correlati