起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12763|回复: 24

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

  [复制链接]

22

主题

598

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
QQ
发表于 2016-6-3 10:34:29 | 显示全部楼层 |阅读模式
本帖最后由 jkshare 于 2016-6-3 11:14 编辑

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

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

1.构建如图
1.jpg

对应源码
  1.    <div class="x-panel-content" xid="content1">
  2.    <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">
  3.         <input type="file" name="photo" xid="uploadfile" bind-change="uploadfileChange"/>
  4.    <button xid="button1" bind-click="button1Click" type="submit">提交</button></form>
复制代码

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

如果需要多文件上传,input需要类似这样构建
  1.     <input type='file'  name='photo1'>
  2.     <input type='file'  name='photo2'>
  3.     <input type='file'  name='photo3'>
复制代码

或者
  1.     <input type='file'  name='photo[]'>
  2.     <input type='file'  name='photo[]'>
  3.     <input type='file'  name='photo[]'>
复制代码



评分

参与人数 2威望 +22 收起 理由
负暄 + 10 很给力!
Masion + 12

查看全部评分

【接活】APP 公众号 小程序 前后端带管理系统全套搞定
联系QQ:646105064 剑客共享  
欢迎用x5开发的朋友进群探讨!WeX5/BeX5民间一群:30057529  二群:211206160

8

主题

20

帖子

90

积分

初级会员

Rank: 2

积分
90
QQ
发表于 2016-8-8 13:27:18 | 显示全部楼层
input 在高版本安卓手机上无法正确解析相册文件地址,你测试过吗
回复 支持 1 反对 0

使用道具 举报

22

主题

598

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
QQ
 楼主| 发表于 2016-6-3 10:42:11 | 显示全部楼层
2.input绑定bind-change="uploadfileChange"
   作用是监控input,看注释很清楚了
  1.         Model.prototype.uploadfileChange = function(event) {
  2.                 if (!event.target.files) { // 如果客户没有选择相关文件,直接返回
  3.                         return;
  4.                 }
  5.                 var uploadimage = $(this.getElementByXid('uploadfile')); // 用jQuery拿到input标签

  6.                  var file = event.target.files[0]; // 拿到用户选择的文件
  7.                
  8.                  if (/^image\/\w+$/.test(file.type)) { // 如果是图片文件
  9.                  this.isimg = true;
  10.                  } else { // 如果用户选的的不是图片文件
  11.                  justep.Util.hint('请选择图片文件!');
  12.                  $uploadimage.val('');
  13.                  }
  14.         };
复制代码



【接活】APP 公众号 小程序 前后端带管理系统全套搞定
联系QQ:646105064 剑客共享  
欢迎用x5开发的朋友进群探讨!WeX5/BeX5民间一群:30057529  二群:211206160
回复 支持 反对

使用道具 举报

22

主题

598

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
QQ
 楼主| 发表于 2016-6-3 10:44:04 | 显示全部楼层
本帖最后由 jkshare 于 2016-6-3 10:46 编辑

3.上主菜
我的后端使用php做的,使用其他后端的,自行找一个对应的上传类对接就可以了
  1.         Model.prototype.button1Click = function(event) {

  2.                         var form = this.getElementByXid("postForm"); // 拿到form表单的js对象
  3.                         var acturl = "http://127.0.0.1/index.php/home/index/uploadcar";
  4.                         form.attributes["action"].value = require.toUrl(acturl);
  5.                         // 提交表单
  6.                         $(form).submit(function() {
  7.                                 $(this).ajaxSubmit(function(resultJson) {
  8.                                         alert(resultJson);
  9.                                 });
  10.                                 return false; // 阻止表单默认提交
  11.                         });

  12.         };
复制代码



【接活】APP 公众号 小程序 前后端带管理系统全套搞定
联系QQ:646105064 剑客共享  
欢迎用x5开发的朋友进群探讨!WeX5/BeX5民间一群:30057529  二群:211206160
回复 支持 反对

使用道具 举报

22

主题

598

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
QQ
 楼主| 发表于 2016-6-3 10:48:05 | 显示全部楼层
本帖最后由 jkshare 于 2016-6-3 10:50 编辑

4.  require("./baasd/jquery.form");   路径改成自己的
      jquery.form.zip (12.04 KB, 下载次数: 474)
【接活】APP 公众号 小程序 前后端带管理系统全套搞定
联系QQ:646105064 剑客共享  
欢迎用x5开发的朋友进群探讨!WeX5/BeX5民间一群:30057529  二群:211206160
回复 支持 反对

使用道具 举报

32

主题

92

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
QQ
发表于 2016-6-3 10:53:06 | 显示全部楼层
jkshare 发表于 2016-6-3 10:44
3.上主菜
我的后端使用php做的,使用其他后端的,自行找一个对应的上传类对接就可以了

棒棒哒
回复 支持 反对

使用道具 举报

22

主题

598

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
QQ
 楼主| 发表于 2016-6-3 10:55:24 | 显示全部楼层
本帖最后由 jkshare 于 2016-6-3 11:20 编辑

5.加上后端吧,thinkphp 3.2的
  1.     public function uploadcar() {
  2.         
  3.         $upload = new \Think\Upload(); //  实例化上传类
  4.         $upload->maxSize = 1024 * 1000 * 10; //  设置附件上传大小
  5.         $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); //  设置附件上传类型
  6.         $upload->rootPath = './upload/img_zj/'; //证件目录
  7.         $upload->savePath = ''; //  设置附件上传目录
  8.         $upload->autoSub = true;
  9.         $upload->subName = array('date', 'Y/m/d');
  10.         $upload->saveRule = date("YmdHis", time()) . "_" . mt_rand(1000, 9999); //上传名已时间戳保存
  11.         //  上传文件
  12.         $info = $upload->upload();
  13.         if (!$info) {
  14.             //上传失败
  15.             
  16.             //  上传错误提示错误信息
  17.             $this->error($upload->getError());
  18.         } else {
  19.             //上传成功
  20.             $imgpath = '/upload/img_zj/' . $info['photo']['savepath'] . $info['photo']['savename'];
  21.             echo $imgpath;
  22.         }
  23.     }
复制代码
我这里直接返回的就是图片地址,你可以把3里面直接改造,类似我这样写法
  1. var xszimg = this.getElementByXid("xszimg");
  2. $(form).submit(function() {
  3.                                 $(this).ajaxSubmit(function(resultJson) {
  4.                                         $(xszimg).attr("src", transURL(resultJson));
  5.                                         $(xszimg).show();
  6.                                 });
  7.                                 return false; // 阻止表单默认提交
  8.                         });
复制代码

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


【接活】APP 公众号 小程序 前后端带管理系统全套搞定
联系QQ:646105064 剑客共享  
欢迎用x5开发的朋友进群探讨!WeX5/BeX5民间一群:30057529  二群:211206160
回复 支持 反对

使用道具 举报

56

主题

370

帖子

963

积分

高级会员

Rank: 4

积分
963
QQ
发表于 2016-6-3 12:54:34 | 显示全部楼层
好帖,佩服!
回复

使用道具 举报

23

主题

83

帖子

144

积分

初级会员

Rank: 2

积分
144
QQ
发表于 2016-6-17 08:13:34 | 显示全部楼层
回复

使用道具 举报

23

主题

83

帖子

144

积分

初级会员

Rank: 2

积分
144
QQ
发表于 2016-6-17 08:15:31 | 显示全部楼层
能否把整个程序上传上来,作为一个DEMO运行的?
回复 支持 反对

使用道具 举报

19

主题

78

帖子

301

积分

中级会员

Rank: 3Rank: 3

积分
301
QQ
发表于 2016-7-7 20:03:52 | 显示全部楼层
这种方式也是一次只能选择一个文件或者图片吧,不是一次选择多张图啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-19 22:33 , Processed in 0.074169 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表