Kameraya erişmek ve web uygulamasını kullanarak fotoğrafları hemen yüklemek için form girişini kullanma


88

Harika olan şu cevaba rastladım :

İPhone iOS6'da ve Android ICS'den itibaren HTML5, cihazınızdan fotoğraf çekmenizi sağlayan aşağıdaki etikete sahiptir:

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

Çekim, kamera, video kamera ve ses gibi değerleri alabilir.

Fotoğraf çekildikten hemen sonra yüklemek için bir çeşit ajax kullanarak bunu bir adım daha ileri götürmek mümkün mü?

Örneğin, telefonumu kullanarak, girişe dokunduğumda, hemen bir fotoğraf çekip kaydetmeme izin verecek kamerayı açıyor. Kameraya kaydettiğimde, daha sonra yüklenecek dosya olarak giriş düğmesiyle listeleniyor.

Kullanıcının formun Gönder düğmesini tıklamasını beklemek yerine bu fotoğrafın hemen yüklenmesi için ne gerekir?


1
Daha önce ne denedin? Neyi şaşırttın?
Marcin

Üçüncü taraf kontrollerle ilgileniyorsanız, Kendo UI demos.kendoui.com/web/upload/api.html
HaBo

1
@Marcin Javascript ile hiç güçlü olmadım, bu yüzden ne deneyeceğimi bile bilmiyordum. Kopyalamaya çalıştığım şey, fotoğrafın kamera ile fotoğraf çektikten sonra fazladan bir adım olmadan hemen hizmete veya uzak sunucuya yüklendiği yerel uygulama özelliğidir.
micah

Yanıtlar:


103

Bunu yapmak gerçekten çok kolay, dosyayı, dosya girdisinin onchange işleyicisinin içindeki bir XHR isteği aracılığıyla gönderin.

<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
Bu cevap için teşekkür ederim. Yani bu olay dinleyicisi, bir fotoğrafın karşıya yüklenmek üzere sıraya konulduğunu bilerek, # myFileInput girişini bir değişiklik için izliyor mu? Ve sonra sanırım sendPic işlevini FormData nesnesi otomatik olarak fotoğrafı yükleyerek çalıştıracak. XHR'nin çok yüksek bir seviyede olduğunu anlıyorum. Bunu doğru anladım mı?
micah

Olay dinleyicisi, kullanıcı bir dosya seçtikten sonra çağrılır.
Ray Nicholus

Yani olay dinleyicisi sendPic(), kamera fotoğrafı çektikten sonra dosyayı hemen yüklemesini ister.
micah

1
XHR aracılığıyla nasıl form gönderileceğini öğrenmek için beni doğru yöne yönlendirebilir misiniz?
iluvpinkerton

3
@iluvpinkerton Elbette, Fine Uploader veya ajax-formunu kullanın (veya bir göz atın) . Sorumluluk Reddi - Her iki kütüphanenin de geliştiricisiyim.
Ray Nicholus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.