使用表单输入来访问相机并使用Web应用程序立即上传照片


88

我遇到了这个很棒的答案

在iPhone iOS6和更高版本的Android ICS中,HTML5具有以下标签,该标签可让您从设备上拍照:

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

捕获可以采用诸如相机,便携式摄像机和音频之类的值。

是否可以通过使用某种Ajax在拍摄后立即上传照片来进一步迈出这一步?

例如,使用我的手机,当我点击输入时,它将打开相机,这将立即允许我拍照并保存。当我将其保存到相机时,它会按输入按钮列出作为要上传的文件。

立即上传此照片而不是等待用户单击表单的“提交”按钮需要什么?


1
您已经尝试了什么?你难住了什么?
Marcin 2013年

如果您对第三方控件感兴趣,可以考虑Kendo UI demos.kendoui.c​​om/web/upload/api.html
HaBo 2013年

1
@Marcin我从不擅长使用JavaScript,所以我不确定该怎么尝试。我要复制的是本机应用程序功能,该功能可以在用相机拍照后立即将照片立即上传到服务或远程服务器,而无需执行其他步骤。
米迦2013年

Answers:


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
感谢您的回答。因此,此事件侦听器正在监视input#myFileInput的更改,知道何时将照片排队等待上传吗?然后我想它会执行FormP objct自动发送照片的sendPic函数吗?我了解XHR的水平很高。我说对了吗?
米迦2013年

用户选择文件后,将调用事件侦听器。
Ray Nicholus 2013年

因此,事件监听器提示,sendPic()在相机拍照后立即上传文件吗?
米卡2013年

1
您能指出正确的方向,以了解如何通过XHR发送表格吗?
iluvpinkerton 2015年

3
@iluvpinkerton当然,请使用(或查看)Fine Uploaderajax-form。免责声明-我是这两个库的开发人员。
雷·尼古拉斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.