[分享] input拍照上传图片方法分享,可单图与多图

演示用,比较简陋,勿怪,方法简单!
input被点击之后默认出现拍照,文档等选项,可以拍照上传,也可以选图库文件上传,也可以录像进行视频上传,自己对应修改文件类型判断就可以了
这些功能无需调用cordova插件

如果需要使用插件拍照上传,使用java作为后端的,可以参考 http://bbs.wex5.com/forum.php?mod=viewthread&tid=91095
该方法是把图片base64编码成二进制流,可以存进数据库,调用的时候解码显示
使用php等其他非java作为后端的,同样可以把图片base64编码化,直接像存字符串那样存进数据库

1.构建如图

对应源码

<div class="x-panel-content" xid="content1">

<form xid="postForm" accept="image/jpeg,image/png" enctype="multipart/form-data" target="postResultIframe" class="form-horizontal
container-fluid" method="post" action="http://127.0.0.1">

<input type="file" name="photo" xid="uploadfile" bind-change="uploadfileChange"/>

<button xid="button1" bind-click="button1Click" type="submit">提交</button></form>

那里面那个action=127.0.0.1那个,改成自己的请求地址

如果需要多文件上传,input需要类似这样构建

<input type=‘file‘ name=‘photo1‘>

<input type=‘file‘ name=‘photo2‘>

<input type=‘file‘ name=‘photo3‘>

或者

<input type=‘file‘ name=‘photo[]‘>

<input type=‘file‘ name=‘photo[]‘>

<input type=‘file‘ name=‘photo[]‘>

2.input绑定bind-change="uploadfileChange"
作用是监控input,看注释很清楚了

Model.prototype.uploadfileChange = function(event) {

if (!event.target.files) { // 如果客户没有选择相关文件,直接返回

return;

}

var uploadimage = $(this.getElementByXid(‘uploadfile‘)); // 用jQuery拿到input标签

var file = event.target.files[0]; // 拿到用户选择的文件

if (/^image\/\w+$/.test(file.type)) { // 如果是图片文件

this.isimg = true;

} else { // 如果用户选的的不是图片文件

justep.Util.hint(‘请选择图片文件!‘);

$uploadimage.val(‘‘);

}

};

3.上主菜
我的后端使用php做的,使用其他后端的,自行找一个对应的上传类对接就可以了

Model.prototype.button1Click = function(event) {

var form = this.getElementByXid("postForm"); // 拿到form表单的js对象

var acturl = "http://127.0.0.1/index.php/home/index/uploadcar";

form.attributes["action"].value = require.toUrl(acturl);

// 提交表单

$(form).submit(function() {

$(this).ajaxSubmit(function(resultJson) {

alert(resultJson);

});
return false; // 阻止表单默认提交

});

};

4. require("./baasd/jquery.form"); 路径改成自己的
http://pan.baidu.com/s/1eSgDluE

5.加上后端吧,thinkphp 3.2的

public function uploadcar() {

$upload = new \Think\Upload(); // 实例化上传类

$upload->maxSize = 1024 * 1000 * 10; // 设置附件上传大小

$upload->exts = array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘); // 设置附件上传类型

$upload->rootPath = ‘./upload/img_zj/‘; //证件目录

$upload->savePath = ‘‘; // 设置附件上传目录

$upload->autoSub = true;

$upload->subName = array(‘date‘, ‘Y/m/d‘);

$upload->saveRule = date("YmdHis", time()) . "_" . mt_rand(1000, 9999); //上传名已时间戳保存

// 上传文件

$info = $upload->upload();

if (!$info) {

//上传失败

// 上传错误提示错误信息

$this->error($upload->getError());

} else {

//上传成功

$imgpath = ‘/upload/img_zj/‘ . $info[‘photo‘][‘savepath‘] . $info[‘photo‘][‘savename‘];

echo $imgpath;

}

}

我这里直接返回的就是图片地址,你可以把3里面直接改造,类似我这样写法

var xszimg = this.getElementByXid("xszimg");

$(form).submit(function() {

$(this).ajaxSubmit(function(resultJson) {

$(xszimg).attr("src", transURL(resultJson));

$(xszimg).show();

});

return false; // 阻止表单默认提交

});

这样直接就把图片显示出来了

时间: 2024-11-05 22:56:00

[分享] input拍照上传图片方法分享,可单图与多图的相关文章

微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友

之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客 微信公众号开发–微信JS-SDK扫一扫功能 在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤 还详细介绍了通过config接口注入权限验证配置以及签名算法实现的Java版本 前两天在做微信分享的时候发现按照以前的思路每次都不能正确获取"分享到朋友圈"按钮点击状态及自定义分享内容接口,而是必须通过一个按钮先点击帮点事件,然后才能获取"分享到朋友圈"按钮点击状态及自定义分享内容接口. 回顾一下以前扫

一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵.自己刚好有空又有兴趣,于是研究了下.没曾想竟也研究出来了.事后我对整个操作过程整理了下,方便他人也提升自己. 废话少扯.以下上干货. 我的思路是:在点击h5上的分享图标时.触发js事件,在这里面能够对当前设备的操作系统和浏览

debian7更换gcc版本的二种方法分享

debian7更换gcc版本的二种方法分享 最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器版本的问题,所以需要将debian7的gcc版本更换为gcc-4.4,办法如下:(推荐用方法一) 方法一: 安装gcc4.4和g++4.4 复制代码 代码如下: sudo apt-get install gcc-4.4sudo apt-get isntal

关于MFC控件删除出现“具有该ID的控件已存在”这样的情况的解决方案,详细,网上都没有这么详细的,我是“深受其害”,所以想将详细的方法分享出去。

网上关于MFC控件删除出现“具有该ID的控件已存在”这样的情况,在网上找了很多关于这方面的东西,但是都不是很全,也不容易弄明白.现在问我直接通过一个项目和图片的形式和大家一块分享一个这个解决方法(如有不对,请相互学习,qq1035169610): 1.创建一个MFC的项目,这里仅限于演示,就把项目名字称为“lu”吧. 2.下面就是将button控件添加到图形界面框中.结果如下: 3.只要将控件拉入到图形界面中,在Resource.h这个文件中创建宏,如下图所示: 4.那么开始改控件的名字和ID.

PHP中的session永不过期的解决思路及实现方法分享

打开php.ini设置文件,修改三行如下: 1.session.use_cookies  把这个的值设置为1,利用cookie来传递sessionid  2.session.cookie_lifetime  这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以PHP的 session不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,999999999怎么样,可以的!就这样.  3.session.gc_maxl

IIS 浏览aspx页面出现无法显示XML页的解决方法分享

这篇文章介绍了IIS 浏览aspx页面出现无法显示XML页的解决方法,有需要的朋友可以参考一下 使用IIS调试.aspx程序时IE提示以下错误: 无法显示 XML 页.         使用 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试.         处理资源 'http://localhost/ 时出错.第 1 行,位置: 2          <%@ Page Language="C#" AutoEventWireup="true&qu

百度分享新浪微博无法分享图片的解决方法

偶然发现,文章分享到sina weibo竟然不能将附带的图片.后来查了一下,发现,不只我遇到了这个问题. 经过查看百度分享官方的帮助文档,发现帮助文档是依照旧版的分享代码指导自定义使用的.而首页获取到的代码是最新版的分享代码, 最新版分享代码虽然支持微信.但是在分享到新浪微博的时候有个问题,就是文章内容中的图片不能随之分享到微博中.不清楚这算不算插件的bug.发现好多大网站也用了百度分享,也存在这个问题. 网上查了一下解决方法,无果,发现不只是我一个人遇到这种问题.于是自己折腾找了个折衷的解决方

WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享

WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置为可用或不可用等常用操作,本文分享这几种方法,起抛砖引玉的作用,欢迎讨论! 1.  清除容器控件内里面指定控件的值的方法 /// <summary> /// 清除容器里面指定控件的值(通过控件的AccessibleName属性设置为"EmptyValue") /// </

JS获取URL中参数值(QueryString)的4种方法分享

http://www.jb51.net/article/48942.htm JS获取URL中参数值(QueryString)的4种方法分享 作者: 字体:[增加 减小] 类型:转载 今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split("?")这样一步步的分解出需要的参数.后来想了一下,肯定会有更加简单的方法的!所以在网上找到了几个很又简单实用的方法,mark下. 方法一:正则法 复制代码 代码如下: function getQueryString