微信sdk 图片上传 两种方法 上传一张显示一张 并附带微信图片放大功能和删除功能
html
<!--上传图片-->
<div class="upload-mod">
<div class="up-box" id="upImg">
<img src="__HOME__/images/03-02-01.png " alt="" class="btn_dianji"/>
</div>
</div>
function.php
/**
* 直接生成微信jssdk_config
* @echo string $jssdk Jssdk_config
* @author 5heAtMin9 <sheatming@foxmail.com>
*/ function wx_jssdk_config($debug='true'){
$getSignPackage = wx_getSignPackage();
$jssdk = '<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>';
$jssdk .= '<script>
wx.config({
debug: '.$debug.',
appId: "'.$getSignPackage['appId'].'",
timestamp: "'.$getSignPackage['timestamp'].'",
nonceStr: "'.$getSignPackage['nonceStr'].'",
signature: "'.$getSignPackage['signature'].'",
jsApiList: ["checkJsApi","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ", "onMenuShareWeibo","onMenuShareQZone","hideMenuItems","showMenuItems","hideAllNonBaseMenuItem","showAllNonBaseMenuItem","translateVoice","startRecord","stopRecord","onVoiceRecordEnd","playVoice","onVoicePlayEnd","pauseVoice","stopVoice","uploadVoice","downloadVoice","chooseImage","previewImage","uploadImage","downloadImage","getNetworkType","openLocation","getLocation","hideOptionMenu","showOptionMenu","closeWindow","scanQRCode","chooseWXPay","openProductSpecificView","addCard","chooseCard","openCard"],
});
</script>';
echo $jssdk;
}
js 此图片上传功能在华为手机号有点bug 比如我一次上传9张图片,但是只给显示1到2张图片
{:wx_jssdk_config("false")}
<script>
var i=0;
var arr_pic = [];
var arr_pic_2 = [];
$('.btn_dianji').click(function(){
if(i<10){
var html = "";
wx.chooseImage({
count: 9-i,
success: function (res) {
var localIds = res.localIds;
syncUpload(localIds);
}
});
var syncUpload = function(localIds){
var localId = localIds.shift();
wx.uploadImage({
localId: localId,
isShowProgressTips: 1,
success: function (res) {
i++;
var serverId = res.serverId; // 返回图片的服务器端ID
arr_pic.push(localId);
arr_pic_2.push(serverId);
//其他对serverId做处理的代码
var $dom = $(html);
paixu();
if(localIds.length > 0){
syncUpload(localIds);
}
if(i >=9){
$("#upImg").hide();
$("#upVideo").hide();
}
}
});
};
}
});
/*处理图片上传排序问题*/
function paixu(){
var m = arr_pic.length;
var html = "";
for(var k= m-1 ;k>-1;k--){
html += '<div class="up-box " ><img src="'+arr_pic[k]+'" class="img"/><div class="close"><img src="__HOME__/images/close.png" onclick="del_img(this)"> </div><input type="hidden" name="image[]" value="'+arr_pic_2[k]+'"></div>';
//m--;
}
var $dom = $(html);
arr_pic = [];
arr_pic_2 = [];
$("#upImg").before($dom);
}
/*图片删除*/
function del_img(dom){
$(dom).parents('.up-box').remove();
i--;
if(i < 9){
$("#upImg").show();
if($("#upPreview").is(":hidden")){
$("#upVideo").show();
}
}
}
/*调用微信预览图片的方法*/
$('.upload-mod').on("click",".up-box .img",function(){
var nowImgurl = $(this).attr("src");
var imgs = [];
var imgObj = $(".up-box .img");//这里改成相应的对象
$.each(imgObj,function(index,el){
imgs.push(imgObj.eq(index).attr("src"));
});
wx.ready(function(){
wx.previewImage({
current: nowImgurl, // 当前显示图片的http链接
urls: imgs // 需要预览的图片http链接列表
});
});
})
</script>
js 第二个方法 上传一张显示一张图片 暂无bug
{:wx_jssdk_config("false")}
<script>
var i=0;
$('#upImg').click(function(){
if(i<10){
var html = '';
wx.chooseImage({
count: 9-i,
success: function (res) {
var localIds = res.localIds;
syncUpload(localIds);
}
});
var syncUpload = function(localIds){
var localId = localIds.shift();
wx.uploadImage({
localId: localId,
isShowProgressTips: 1,
success: function (res) {
i++;
// alert(localIds.length);
var serverId = res.serverId; // 返回图片的服务器端ID
html ='';
html += '<div class="up-box " ><img src="'+localId+'" class="img"/><div class="close"><img src="__HOME__/images/close.png" onclick="del_img(this)"> </div><input type="hidden" name="image[]" value="'+serverId+'"></div>';
//其他对serverId做处理的代码
var $dom = $(html);
$("#upImg").before($dom);
if(localIds.length > 0){
setTimeout(function(){
syncUpload(localIds);
},500);
}
if(i > 8){
$("#upImg").hide();
}
}
});
};
}
});
</script>
<script>
/*图片删除*/
function del_img(dom){
$(dom).parents('.up-box').remove();
i--;
if(i < 6){
$("#upImg").show();
}
}
/*调用微信预览图片的方法*/
$('.upload-mod').on("click",".up-box .img",function(){
var nowImgurl = $(this).attr("src");
var imgs = [];
var imgObj = $(".up-box .img");//这里改成相应的对象
$.each(imgObj,function(index,el){
imgs.push(imgObj.eq(index).attr("src"));
});
wx.ready(function(){
wx.previewImage({
current: nowImgurl, // 当前显示图片的http链接
urls: imgs // 需要预览的图片http链接列表
});
});
})
</script>
微信sdk 图片上传 两种方法 上传一张显示一张 并附带微信图片放大功能和删除功能的更多相关文章
- 两种方法上传本地文件到github
https://www.jianshu.com/p/c70ca3a02087 自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的 ...
- 两种方法上传本地文件到github(转)
自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...
- 两种方法将oracle数据库中的一张表的数据导入到另外一个oracle数据库中
oracle数据库实现一张表的数据导入到另外一个数据库的表中的方法有很多,在这介绍两个. 第一种,把oracle查询的数据导出为sql文件,执行sql文件里的insert语句,如下: 第一步,导出sq ...
- MFC上显示摄像头JPEG图片数据的两种方法
其一是借助opencv,其二是利用流对象. 方法一: CvMat *mat; ,,CV_8UC1); ,,CV_8UC1,JPEGBuf); /*初始化矩阵信息头,这里的JPEGBuf就是JPEG图像 ...
- QT 实现图片旋转的两种方法
第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rota ...
- 窗体图片背景(两种方法:设置Brush.Bitmap指向图片,别的控件也可以这样)
var Bitmap: TBitmap; procedure TForm1.FormCreate(Sender: TObject); begin Bitmap := TBitmap.Creat ...
- 【Qt】实现程序重启的两种方法
Qt5/PyQt5 实现程序重启的两种方法 前言 最近在写一个开源项目,需要实现一个程序自动重启的功能.尝试了好几种方式,效果均不太理想. 一开始的实现思路是,记为思路一吧.大概就是写一些 shell ...
- WCF生成客户端代理对象的两种方法的解释
最近在封装WCF,有一些很好的实践就记录下来,大家可以放心使用,所有代码都已经调试过.如果有高手可以大家探讨一下. 在WCF中有两种不同的方法可以用于创建客户端服务对象,他们分别为: 1. 代理构造法 ...
- GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程
从早上下课到现在一直在琢磨如何给Github下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan. ...
随机推荐
- 创建MySQL用户 赋予某指定库表的权限
摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...
- SpringBoot乱码
第一步: 第一步,约定好传参编码格式 不管是运用httpclient,还是原生http,都要设置传参的编码,为了统一,这儿全部设置为utf-8 第二步,修正application.properties ...
- 写入多线程Log4net 多线程写入
问题描述: 系统经常出现log无缘无故的丧失,每次系统出问题时去查log时发明log没有,愁闷了许久. 今天搞了将近一天,终于搞定. 处理步骤: 写了个控制台程序,在while(true)里头调用lo ...
- redis学习 (key)键,Python操作redis 键 (二)
# -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...
- Gorm使用详解
1.什么是Gorm go语言编写的orm框架 特点: 1)全功能ORM 2)关联(包含一个,包含多个,属于,多对多) 3)Callbacks(创建/保存/更新/删除/查找前后回调) 4)预加载 5)事 ...
- [Linux]Linux read/write
Read 默认read是block模式,如果想设置非block默认,则open时候参数添加O_NONBLOCK read block模式下,并非等到Buffer满才返回,而是只要有data avaia ...
- java 泛型好文收集
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一 https://www.cnblogs.com/coprince/p/8603492.html
- java模式:建造者模式
我发现很多源码很喜欢用这个模式,比如spring cloud,spring framework. 建造者模式(Builder)用以构建各种各样的对象,主要功能就是代替对象的构造函数,更加自由化. 举个 ...
- Deepin 系统下安装VMware并激活
1.打开深度商店:搜索VMware,并下载安装. 2.打开启动器:点击VMware-install. 3.填写管理员密码. 4.下一步,完成安装. 5.打开VMware Workstation,输入密 ...
- SQLServer截取字符串常用函数
SQL Server中一共提供了三个字符串截取函数:LEFT().RIGHT().SUBSTRING(). 一.LEFT()函数 函数说明如下: 语法:LEFT(character,integer). ...