HTML 页面内容包含以下标签即可:

                   <input id="btn_select" type="button"  value="从相册选择" />
<input id="btn_takephoto" type="button" value="拍照" />
<img id="imgViewer" src="" alt="暂无图片" width="100" height="100"/>
<input id="btn_save" type="button" value="确认上传" />

JS实现部分:

(function() {
var url = "XXXXXXXXXX上传的文件地址"; var file;
var w = null;
// H5 plus事件处理
function plusReady() { //w=plus.nativeUI.showWaiting();
//H5 准备好的时候 绑定拍照事件 //拍照单机事件
$("#btn_takephoto").bind("click", function() {
//拍照
plus.camera.getCamera().captureImage(function(p) {
plus.io.resolveLocalFileSystemURL(p, function(entry) {
console.log(entry.toLocalURL());
$("#imgViewer").attr("src", entry.toLocalURL());
}, function(e) {
outLine("读取拍照文件错误:" + e.message);
}); });
}); //从相册选择
$("#btn_select").bind("click", function() {
plus.gallery.pick(function(p) {
console.log(p);
$("#imgViewer").attr("src", p);
});
}); //上传文件
$("#btn_save").bind("click", function() {
var wt = plus.nativeUI.showWaiting();
//根据路径读取到文件
plus.io.resolveLocalFileSystemURL($("#imgViewer").attr("src"),function(entry){
entry.file( function(file){
var fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file); fileReader.onloadend = function(e) {
var f = $("#imgViewer").attr("src");
var filename = f.replace(f.substring(0, f.lastIndexOf('/') + 1), '');
var param = {
fileName: filename
dataInput: e.target.result.toString()
};
//自定义的ajax方法
ToolHelper.AsyncAjax(url, param, function(data, para) {
wt.close();
if (data[0].responseCode != undefined && data[0].responseCode != "") {
$.dialog.alert(data[0].responseMessage);
} else {
$.dialog.alert("上传成功");
}
});
} });
}); });
}
if (window.plus) {
plusReady();
} else {
document.addEventListener("plusready", plusReady, false);
} return BaseObj = {
save: saveEdit
};
})();

JavaScript

以上两个部分 用到了 dcloud html+中的  相机相关事件和方法,以及IO 根据地址 获取文件流的方法,上传到服务器的图片为base64,因此如果服务器需要保存图片 需要解码。

HTML5+ 拍照上传 和选择文件上传的更多相关文章

  1. 强大的支持多文件上传的jQuery文件上传插件Uploadify

    支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...

  2. 《如何将windows上的软件包或文件上传到linux服务上》

    昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...

  3. SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...

  4. SpringBoot - 实现文件上传1(单文件上传、常用上传参数配置)

    Spring Boot 对文件上传做了简化,基本做到了零配置,我们只需要在项目中添加 spring-boot-starter-web 依赖即可. 一.单文件上传 1,代码编写 (1)首先在 stati ...

  5. 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传

    在基于SqlSugar的开发框架的服务层中处理文件上传的时候,我们一般有两种处理方式,一种是常规的把文件存储在本地文件系统中,一种是通过FTP方式存储到指定的FTP服务器上.这种处理应该由程序进行配置 ...

  6. skymvc文件上传支持多文件上传

    skymvc文件上传支持多文件上传 支持单文件.多文件上传 可以设定 文件大小.存储目录.文件类型 //上传的文件目录 $this->upload->uploaddir="att ...

  7. yii2.0单文件上传和多文件上传

    yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规 ...

  8. 使用PHP实现文件上传和多文件上传

    PHP 2013 年 9 月 4 日 暂无评论 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一.值得高兴的是,在PHP中实现文件上传功能要比在Java.C#等语言 ...

  9. HTML5 + AJAX ( 原生JavaScript ) 异步多文件上传

    这是在上篇 HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条 的修改版本.后台代码不变就可以接着使用,但是脚本不再使用jQuery了,改为原生的 JavaScript 代码,所以我 ...

随机推荐

  1. Python 对不均衡数据进行Over sample(重抽样)

    需要重采样的数据文件(Libsvm format),如heart_scale +1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.4 ...

  2. 挂载windows共享文件夹

    sudo mount -o username=用户名,password=密码 //本机IP/共享目录 ~/挂载目录

  3. PHP redis 批量操作

    参考网站 phpredis扩展 :https://github.com/phpredis/phpredis#pconnect-popen 命令参考:http://doc.redisfans.com   ...

  4. C# cmd执行命令

    CMD命令执行 ///<summary>         /// cmd命令执行,在cmd上可以执行的语句,直接传到这里,调用grads画图实例如下:         ///  Cmd(& ...

  5. php实现递归的三种方式: 遍历文件夹实例

    递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去.实现递归函数可以采取什么方式呢?本文列出了三种基本方式.理解其原来需要一定的基础知识 ...

  6. 多线程完成socket

    //服务器端代码 public class Service { //服务器 public static void main(String[] args) { ServerSocket serverSo ...

  7. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  8. Android apk集成

    刚开始学习Android,对很多东西都不懂,所以以下是我做的第一件事,记录一下,也就是apk的集成: 我们集成的apk是已经签过名的第三方apk,并且需要集成到system/priv-app目录下,过 ...

  9. C# Request中修改header信息

    var headers = app.Context.Request.Headers; Type hdr = headers.GetType(); PropertyInfo ro = hdr.GetPr ...

  10. 在centos环境安装mysql

    在Linux上安装mysql数据库,我们可以去其官网上下载mysql数据库的rpm包,http://dev.mysql.com/downloads/mysql/5.6.html#downloads,大 ...