前端jsp页面

<head>
<script type="text/javascript" language="javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js" ></script>
</head>
<body>
<div class="item_flex "><div class="label">上传图片凭证(最多6张)</div>
</div>
<div class="item_flex "><div class="pic_upload"><div class="pic_box" onclick="uplpadImage(this);"><img src="" alt="" class="icon-camera" ></div></div>
</div><div onclick="uploadImg" >提交</div>
</body>
<script>
$(function(){wx.config({debug: true, // 是否开启调试模式appId: "", // 必填,企业号的唯一标识,此处填写企业号corpidtimestamp: "", // 必填,生成签名的时间戳nonceStr: "", // 必填,生成签名的随机串signature: "",// 必填,签名jsApiList: ["chooseImage","uploadImage","getLocalImgData"] // 必填,需要使用的JS接口列表}); wx.ready(function(){// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。});wx.error(function(res){alert("res="+res.errMsg);// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。}); //删除图片$(document).on('click','.icon-delete2', function () {$(this).parent('.pic_box').remove()})
})//获取上传图片
var formData;
function uplpadImage(obj){var length1=$('.pic_upload').children().length;//剩下可用长度var length2=7-length1;if(length2<=0){return;}wx.chooseImage({count: length2,sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],success (res) {obj.remove();// tempFilePath可以作为 img 标签的 src 属性显示图片var localIds = res.localIds;let picBox="";for (i in localIds) {picBox+= '<div class="pic_box">';picBox+='<img src="'+localIds[i]+'" alt="" class="goods-pic" onclick="imgPreview(\''+localIds[i]+'\')">';picBox+='<img src="" alt="" class="icon-delete2">';picBox+='</div>';}    picBox+= '<div class="pic_box" onclick="uplpadImage(this);">';picBox+='<img src="" alt="" class="icon-camera">';picBox+='</div>';$('.pic_upload').append(picBox)formData=getformData();//由于实际需要转成formdata对象上传到本地后台进行处理,不上传到微信服务器}})
}function getformData(){var lenght3=$('.pic_upload').children().length;var index=0;var pzs=[];for(var i=0;i<lenght3-1;i++){var localId=$(".pic_upload div").eq(i).find("img")[0].src;pzs.push(localId);}//alert("pzs:"+pzs);var fd=base64ToFormdata(pzs,index);//base64转Formdatareturn fd;
}
//base64转formdata对象
var fd = new FormData();
function base64ToFormdata(pzs,index){wx.getLocalImgData({localId: pzs[index], // 图片的localIDsuccess: function (res) {var localData = res.localData; // localData是图片的base64数据,可以用img标签显示//alert("localData["+index+"]"+localData);//因为安卓获取的base64编码缺少头部,判断是否有这样的头部if (localData.indexOf('data:image') != 0){localData = 'data:image/jpeg;base64,' +  localData;localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg');}var data = window.atob(localData.split(",")[1]);//alert("data:"+data);var ia = new Uint8Array(data.length);for (let i = 0; i < data.length; i++) {ia[i] = data.charCodeAt(i);}const blob = new Blob([ia], { type: 'image/jpeg' });fd.append('files', blob, new Date().getTime() + '.jpg');index = index + 1;if (index < pzs.length) {//由于getLocalImgData是异步请求,需要递归遍历getBase64(pzs, index);}}});return fd;
}
//上传图片
function uploadImg(){$.ajax({  url :' ', //上传到后台进行处理type: "POST",  data: formData,contentType: false,processData: false,cache:false,async:false,success : function(data) {},error : function(){}  });
}
//图片预览功能function imgPreview(src){var pzs=[];var lenght3=$('.pic_upload').children().length;for(var i=0;i<lenght3-1;i++){var localId=$(".pic_upload div").eq(i).find("img")[0].src;pzs.push(localId);}wx.previewImage({current:src,urls:pzs});}
</script>

实际效果:可以选择拍照或者本地上传,点击删除按钮可进行删除图片,超过指定张数不可选择,点击图片可以进行放大预览,支持左右滑动预览


微信公众号图片上传和预览功能前端实现相关推荐

  1. alert()的功能_前端实现简单的图片上传小图预览功能

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  2. html ajax 图片上传,Ajax实现图片上传并预览功能

    先给大家展示下效果图,大家感觉不错,请参考实现代码. 最近在使用ThinkPHP5开发项目中客户有一个需求是在图片上传时附带预览功能.虽然现在有很多的插件能实现,但是还是觉得自己写比较好.我们知道,图 ...

  3. layui上传图片列表展示_ThinkPHP5+Layui实现图片上传加预览功能

    html代码 上传封面 js代码 var uploadInst = upload.render({ elem:'#cover' ,url:'addCourse' ,accept:'file' // 允 ...

  4. 前端实现微信公众号图片上传预览jssdk

    最近做了公众号的项目,需要用jssdk,研究了一段时间也走了一些弯路,现在做一些记录 1.首先引入 <script src = "http://res.wx.qq.com/open/j ...

  5. 利用jquery.form.js实现Ajax无刷新图片上传及预览功能

    某些时候当我们做登记页面的时候可能需要上传图片,并实现即时预览的功能. 如果只是预览而不上传,可以使用ImagePreview来实现,方便简单.如果需要上传,那么你也可以使用uploadify无刷新上 ...

  6. js html怎么加入图片,js实现图片上传并预览功能

    思路:完成这个功能,首先需要美化上传图片的按钮,然后添加一个 标签,在图片上传之后,用新图片的src替换原来 标签中的src. 如下图所示,是原始的按钮样式: 美化步骤: (1)将上传图片标签采用绝对 ...

  7. 微信小程序图片上传和预览以及取消上传图片案例

    前言: 做小程序项目遇到一个需求,就是上传图片和预览,以及取消指定的图片,其实这个功能挺好搞的,借助微信官方的API结合实现,只不过注意一点细节.不多说了直接上代码和效果图.大家可以直接复制我的代码进 ...

  8. html实现多图片上传并预览,【前端预览】实现多张上传图片预览查看

    alert("抱歉,你的浏览器不支持 FileReader"); input.setAttribute('disabled','disabled'); }else{ input.a ...

  9. java开发微信公众号图片上传功能,不吃透都对不起自己

    常见的分布式事务场景 分布式事务其实就在我们身边,你一直在用,但是你却一直不注意它. 转账 扣你账户的余额,增加别人账户余额,如果只扣了你的,别人没增加这是失败:如果没扣你的钱别人也增加了那银行的赔钱 ...

  10. 微信小程序 删除服务器图片,微信小程序实现图片上传放大预览删除代码

    本文实例为大家分享了微信小程序图片上传放大预览的具体代码,供大家参考,具体内容如下 image.js代码: = 9) { this.setData({ lenMore: 1 }); setTimeou ...

最新文章

  1. setTimeOut()
  2. DrugVQA | 用视觉问答技术预测药物蛋白质相互作用
  3. R语言使用ggplot2包的快速可视化函数qplot绘制基础密度图实战
  4. 使用ansible部署安装corosync+pacemaker
  5. 后Hadoop时代的大数据技术思考:数据即服务
  6. vm安装u盘linux,vmware 安装centos 插入u盘报错,大神请指导
  7. 【IE6的疯狂之四】IE6文字溢出BUG
  8. 不想做科技第一的金融公司,不是好的养老去处
  9. 实现添加商品信息功能
  10. gc日志一般关注什么_JVM(23)JVM的Full GC日志
  11. [詹兴致矩阵论习题参考解答]习题1.10
  12. 浏览器实现word在线预览
  13. 漫画 | 前端发展史的江湖恩怨情仇~
  14. hotmail邮箱登录服务器,hotmail邮箱登录页面在哪 hotmail邮箱账号登录设置教程
  15. 搜狗首席科学家柳超博士谈“字根嵌入”让机器更懂中文
  16. Error while sending STMT_PREPARE packet. PID=29294
  17. 十二星座物语,女生最喜欢的星座性格【10】
  18. 肥任学java - 基本类型(1)
  19. .NET Framework和.NET Core/.NET5/.NET6
  20. web专题 HTTP介绍和HTTPS协议区别,以及http版本特性

热门文章

  1. 小米笔记本关闭UEFI secure boot
  2. iOS 网页截取长图
  3. 微信小程序UI设计规范及文档模版
  4. uniapp-UI设计
  5. Java基础之集合篇(内容超详细,带你轻松搞懂List、Set和Map的使用)
  6. php对接腾讯云直播
  7. 1万美元FS-ISAC网络安全奖学金
  8. linux wget 磁力链接,Linux安装Aria2来实现种子、磁力下载
  9. ASUS华硕笔记本Windows 7驱动光盘大全~
  10. 四种常见的XML解析方式