ใช้การป้อนแบบฟอร์มเพื่อเข้าถึงกล้องและอัปโหลดรูปภาพทันทีโดยใช้เว็บแอป


88

ฉันเจอคำตอบนี้ซึ่งยอดเยี่ยม:

ใน iPhone iOS6 และจาก Android ICS เป็นต้นไป HTML5 มีแท็กต่อไปนี้ซึ่งช่วยให้คุณถ่ายภาพจากอุปกรณ์ของคุณ:

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

การจับภาพสามารถใช้ค่าต่างๆเช่นกล้องถ่ายรูปกล้องถ่ายวิดีโอและเสียง

เป็นไปได้หรือไม่ที่จะก้าวไปอีกขั้นโดยใช้ ajax บางชนิดเพื่ออัปโหลดรูปภาพทันทีหลังจากถ่ายเสร็จ

ตัวอย่างเช่นการใช้โทรศัพท์ของฉันเมื่อฉันแตะที่อินพุตมันก็จะเปิดกล้องขึ้นมาซึ่งจะทำให้ฉันสามารถถ่ายภาพและบันทึกได้ทันที เมื่อฉันบันทึกลงในกล้องแล้วปุ่มป้อนข้อมูลจะแสดงรายการเป็นไฟล์ที่จะอัปโหลด

ต้องใช้อะไรบ้างในการอัปโหลดรูปภาพนี้ทันทีแทนที่จะรอให้ผู้ใช้คลิกปุ่มส่งของแบบฟอร์ม


1
คุณได้ลองทำอะไรแล้ว? คุณนิ่งงันอะไร
Marcin

หากคุณสนใจการควบคุมของบุคคลที่สามคุณสามารถพิจารณา Kendo UI demos.kendoui.com/web/upload/api.html
HaBo

1
@ Marcin ฉันไม่เคยแข็งแกร่งกับจาวาสคริปต์ดังนั้นฉันจึงไม่แน่ใจว่าจะลองทำอะไร สิ่งที่ฉันพยายามทำซ้ำคือคุณสมบัติของแอพที่มาพร้อมกับการอัปโหลดรูปภาพไปยังบริการหรือเซิร์ฟเวอร์ระยะไกลทันทีโดยไม่มีขั้นตอนเพิ่มเติมหลังจากถ่ายภาพด้วยกล้อง
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 objct โดยอัตโนมัติอัปโหลดรูปภาพหรือไม่ ฉันเข้าใจว่า XHR อยู่ในระดับที่สูงมาก ฉันเข้าใจถูกไหม
micah

ตัวฟังเหตุการณ์ถูกเรียกใช้หลังจากผู้ใช้เลือกไฟล์
Ray Nicholus

ดังนั้นผู้ฟังเหตุการณ์จึงแจ้งsendPic()ให้อัปโหลดไฟล์ทันทีหลังจากที่กล้องถ่ายภาพ?
micah

1
ช่วยชี้ทางที่ถูกต้องให้ฉันเพื่อดูวิธีส่งแบบฟอร์มผ่าน XHR ได้ไหม
iluvpinkerton

3
@iluvpinkerton แน่นอนว่าการใช้งาน (หรือดูที่) วิจิตรอัพโหลดหรืออาแจ็กซ์ฟอร์ม Disclaimer - ฉันเป็นผู้พัฒนาห้องสมุดทั้งสองแห่ง
Ray Nicholus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.