微信js sdk上传多张图片,微信上传多张图片

该案例已tp3.2商城为例

直接上代码:

php代码:

 public function ind(){
$appid="11111111111111111111";
$secret="11111111111111111111";
$token = S('access_token');
if (!$token) {
$res = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=11111111111111&secret=11111111111111111111111111");
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
// 不能频繁的访问https://api.weixin.qq.com/cgi-bin/token,每日有次数限制
// 通过此接口返回的token的有效期目前为2小时。令牌失效后,JS-SDK也就不能用了。
// 因此,这里将token值缓存1小时,比2小时小。缓存失效后,再从接口获取新的token,这样
// 就可以避免token失效。
// S()是ThinkPhp的缓存函数,如果使用的是不ThinkPhp框架,可以使用你的缓存函数,或使用数据库来保存。
S('access_token', $token, 3600);
}
$ticket = S('wx_ticket');
if(!$ticket) {
$tokinfo = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$token&type=jsapi");
$tokinfo = json_decode($tokinfo, true);
$ticket=$tokinfo['ticket'];
S('wx_ticket', $ticket, 3600);
}
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if($ticket){
$timestamp = time();
$wxnonceStr = "abcdefghijklmnopqrstuvw";
$wxticket = $ticket;
$wxOri = "jsapi_ticket=$wxticket&noncestr=$wxnonceStr&timestamp=$timestamp&url=$url";
$wxSha1 = sha1($wxOri);
$this->assign("token",$token);
$this->assign("timestamp",$timestamp);
$this->assign("wxnonceStr",$wxnonceStr);
$this->assign("wxshal",$wxSha1);
}
}

模板中的js代码:

  // 微信配置
var token="{$token}";
var timestamp="{$timestamp}";
var wxnonceStr = "{$wxnonceStr}";
var wxshal = "{$wxshal}";
wx.config({
debug: false,
appId: "wx978a1c1edb5fea34",
timestamp: "{$timestamp}",
nonceStr: "{$wxnonceStr}",
signature: "{$wxshal}",
jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline','chooseImage','previewImage','uploadImage','downloadImage'] // 功能列表,我们要使用JS-SDK的什么功能
});
var serverids=[];
var leng=0;
var syncUpload = function(localIds){
myApp.hidePreloader();
myApp.showPreloader();
var localId = localIds.pop();
wx.uploadImage({
localId: localId,
isShowProgressTips:0,
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
serverids.push(serverId);
//其他对serverId做处理的代码
if(localIds.length > 0){
syncUpload(localIds);
}
if(leng==serverids.length){
var json = {};
for(var i=0;i<serverids.length;i++)
{
json[i]=serverids[i];
}
var serids=JSON.stringify(json);
$.ajax({
type : "post",
url : "/H5/index/downloadMedia",
data : {mediaid:serids} ,
dataType:"json",
async : false,
success : function(response){
myApp.hidePreloader();
$.each(response.image,function (k,v) {
var contentUl = SetImgBox(v);
$(".img_box").append(contentUl);
})
myApp.hidePreloader();
alert("上传成功!");
//alert(response.image[0])
//$(".ago").attr("src",response.image[0])
}
});
}
}
});
};
$(function () {
wx.ready(function () {
// 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
$("#contentid").click(function () {
var ileng=$("#imglength li").length;
var wleng=9+1-ileng;
var that = $(this);
wx.chooseImage({
count: wleng, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
leng = localIds.length;
syncUpload(localIds); //上传代码图片就在此直接调用
}
});
})
})
})

php 服务器接收的代码:

 public function downloadMedia() {
$mediaId=$_POST["mediaid"];
$appid="11111111111111111111";
$secret="222222222222222222222222222";
$mediaId = json_decode($mediaId);
$token = S('access_token');
$imgs=array();
if (!$token) {
$res = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=11111111111111111111&secret=11111111111111111111111111111");
$res = json_decode($res, true);
$token = $res['access_token'];
// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
// 不能频繁的访问https://api.weixin.qq.com/cgi-bin/token,每日有次数限制
// 通过此接口返回的token的有效期目前为2小时。令牌失效后,JS-SDK也就不能用了。
// 因此,这里将token值缓存1小时,比2小时小。缓存失效后,再从接口获取新的token,这样
// 就可以避免token失效。
// S()是ThinkPhp的缓存函数,如果使用的是不ThinkPhp框架,可以使用你的缓存函数,或使用数据库来保存。
S('access_token', $token, 3600);
}
foreach ($mediaId as $key=>$value){
$nfilename = date('YmdHis').get_rand_str(6);
$day=date("Y");
$dam=date("m");
$updir = './Public/trade/'.$day.'/'.$dam.'/';
$updir2 = '/Public/trade/'.$day.'/'.$dam.'/';
if (!is_dir($updir)){
//第三个参数是“true”表示能创建多级目录,iconv防止中文目录乱码
$res=mkdir(iconv("UTF-8", "GBK", $updir),0777,true);
if (!$res){
$this->error = "目录 $updir 创建失败";
return false;
// $this->output_error("目录 $updir 创建失败");
}
}
$med=$value;
$content = file_get_contents("http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$token&media_id=$med");
$filename = "$updir/$nfilename.jpg";
$file2="$updir2/$nfilename.jpg";
file_put_contents($filename, $content);
array_push($imgs,$file2);
}

微信js sdk上传多张图片的更多相关文章

  1. 微信小程序上传多张图片,及php后台处理

    微信小程序上传多张图片,级小程序页面布局直接来代码index.wxml <view class='body' style='width:{{windowWidth}}px;height:{{wi ...

  2. 微信JS图片上传与下载功能--微信JS系列文章(三)

    概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){ v ...

  3. 微信小程序-上传多张图片加进度条(支持预览、删除)

    2018-12-24 详情示例见:https://www.cnblogs.com/cisum/p/9564898.html 2018-12-29 组件下载见:https://www.cnblogs.c ...

  4. 微信JSSDK上传多张图片

    之前是使用for循环实现的,但是安卓手机没有问题,苹果手机只能上传最后一张图片. 好在有高手在前面趟路,实用的循环调用.苹果是没有,安卓不清楚.以下内容转自:http://leo108.com/pid ...

  5. javascript jssdk微信上传一张图片的方法

    javascript jssdk微信上传一张图片的方法 <pre> wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'co ...

  6. 整理几个js上传多张图片的效果

    一.普通的上传图片,张数不限制 <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"&g ...

  7. 如何在IPFS里面上传一张图片

    之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...

  8. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  9. 实战微信JS SDK开发:贺卡制作与播放(1)

    前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...

随机推荐

  1. VUE路由history模式坑记--NGINX

    因微信分享和自动登录需要,对于URL中存在'#'的地址,处理起来比较坑(需要手动写一些代码来处理).还有可能会有一些隐藏的问题没被发现. 如果VUE能像其他(JSP/PHP)系统的路径一样,就不存在这 ...

  2. Map 键值对 set get delete

  3. zoom,zoom与haslayout的关系,zoom与transform: scale( )的区别

    1.zoom:(缩放)

  4. 初级模拟电路:3-1 BJT概述

    回到目录 1.   名称由来 BJT的全称是双极性结型晶体管(Bipolar Junction Transistor),国内俗称三极管.其实,在英语中,三极管(triode)特指以前的真空电子管形式的 ...

  5. yum仓库配置ftpx协议

    [root@localhost ~]# iptables -F[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# syste ...

  6. 00.用 yield 实现 Python 协程

    来源:Python与数据分析 链接: https://mp.weixin.qq.com/s/GrU6C-x4K0WBNPYNJBCrMw 什么是协程 引用官方的说法: 协程是一种用户态的轻量级线程,协 ...

  7. BZOJ 4511 洛谷3131 USACO 16.Jan 七子共

    用sum[i]表示前缀和模7的值,若存在i≤j,满足sum[i]==sum[j],则区间(i,j]的和为7的倍数. O(N)扫出sum[0]~sum[6]第一次出现的位置first和最后一次出现的次数 ...

  8. 【POJ 1860】Currency Exchange

    [题目链接]:http://poj.org/problem?id=1860 [题意] 给你n种货币,m种货币之间的交换信息; 交换信息以 A,B,RA,CA,RB,CB的形式给出; 即A换B的话假设A ...

  9. nyoj_18_The Triangle_201312071533

    The Triangle 时间限制:1000 ms  |           内存限制:65535 KB 难度:4   描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure ...

  10. 1393 0和1相等串 51nod

    1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...