php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...

发布图片

最多可添加9张作品

发布

wx.config({

debug: false,

appId: '{$signPackage["appid"]}',

timestamp: {$signPackage["timestamp"]},

nonceStr: '{$signPackage["noncestr"]}',

signature: '{$signPackage["signature"]}',

jsApiList: [

// 所有要调用的 API 都要加到这个列表中

'chooseImage','previewImage','uploadImage','downloadImage'

]

});

wx.ready(function () {

// 5.3 上传图片

$('.uploadImage').on('click', function () {

wx.chooseImage({

success: function (res) {

var localIds = res.localIds;

syncUpload(localIds);

}

});

});

var syncUpload = function(localIds){

var localId = localIds.pop();

wx.uploadImage({

localId: localId,

isShowProgressTips: 1,

success: function (res) {

var serverId = res.serverId; // 返回图片的服务器端ID

var str = $('#img_str').val()+serverId+',';

$('.imglist').append("%22+localId+%22");

$('#img_str').val(str);

//其他对serverId做处理的代码

if(localIds.length > 0){

syncUpload(localIds);

}

if($('.imglist img').size() >= 9) {

$("#upload_button").hide();

}

},

fail: function (res) { alert(JSON.stringify(res)); }

});

};

});

$(".sb").click(function(){

var imglist = $(".imglist").html();

if(imglist == "" || imglist == null) {

alert("请添加图片");

return false;

} else {

if($(".imglist").find('img').size() >9) {

alert("图片只允许上传9张!");

return false;

}

var img_str = $('#img_str').val();

}

$.post("{:U('Test/wxupload')}", {img_str:img_str},function(data){

window.location.href = "__URL__/test";

});

});

后台处理 testController.php

public function test() {

$signPackage = $this->getSignPackage();

$this->assign('signPackage', $signPackage);

$this->display('test');

}

public function wxupload() {

header('Content-type:application/json;chartset=utf-8');

$img_str = I('post.img_str', '', 'string');

$uploadROOT = realpath(THINK_PATH.'../Public/');//定义保存路径

$uploadPath = $uploadROOT."/Upload/".date('Y-m-d')."/";//为方便管理图片 保存图片时 已时间作一层目录作区分

if(!file_exists($uploadPath)) mkdir($uploadPath, 0775);

$savepath = '/Public/Upload/' . date('Y-m-d').'/';

$img_str = rtrim($img_str, ',');

$img_arr = explode(',', $img_str);

$str = ''; //sql语句字符串

$imgs = array();

foreach($img_arr as $v) {

$imgs[] = $this->doWechatPic($v);

}

$str = ''; //sql语句字符串

foreach($imgs as $v) {

$str .= "(NULL," . $this->_user_info_id . "," . $publish_id . ",'" . $v . "')" . ",";

}

$sql = "INSERT INTO img(`id`,`userid`,`publish_id`,`img_url`) values" . rtrim($str, ',');

$res = M()->query($sql);

if($res) {

$data = array('errcode' => 0, 'msg' => '成功!');

} else {

$data = array('errcode' => 1, 'msg' => '失败!');

}

exit( JSON($data));

}

/*

* 从微信服务器获取图片流

*/

public function doWechatPic($serverId){//media_id=jlJs_iQIOA-TKLuhk4nCdPEdXnJ6paIeToO8vr-WUGvz05-6i5n498EzI232xSxn

$media_id = $serverId;//提交过来的serverId即$media_id

$access_token = $this->_get_wx_access_token_address( false );//获取access_token值

$pic_url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$media_id}";

$filebody = file_get_contents($pic_url);//通过接口获取图片流

$filename = uniqid().'.jpg'; //定义图片名字及格式

return $this->saveFile($filename, $filebody);

}

/*

* 定义文件路径,写入图片流

*/

public function saveFile($filename, $filecontent){

$uploadROOT = realpath(THINK_PATH.'../Public/');//定义保存路径

$uploadPath = $uploadROOT."/Upload/".date('Y-m-d')."/";//为方便管理图片 保存图片时 已时间作一层目录作区分

if(!file_exists($uploadPath)) mkdir($uploadPath, 0775);

$upload_dir = '/Public/Upload/' . date('Y-m-d'); //保存路径,以时间作目录分层

$savepath = '.'.$upload_dir.'/'.$filename;

if(file_put_contents($savepath, $filecontent)){//写入图片流生成图片

return $upload_dir."/".$filename;//返回图片路径

}else{

exit(JSON('save failed'));

}

}

需要注意的是 access_token,signPackage参数不能错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?

JavaScript 的节流和防抖已经是老生畅谈的问题了,对于前端行业技术大牛来讲不过是小菜一碟,而对于绝大多数前端小白或初级工程师,绝对是必备的知识,值得学习。接下来小郭就带大家一起学习“防抖”与“节流”。防抖不知道大家第一次…

php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...

php 与 JavaScript 有很多相似的地方&#xff1b; for循环中也有两个相同&#xff1b; 只是 php 比 js 多了一个 exit &#xff0c; 其他用法一样&#xff1b;for($i 1;$i<11;$i){if($i3){// exit; //当$i 3 代码停止运行&#xff0c;包括循环外的&#xff0c;后面的也停止运…

location php,Nginx服务器中的location配置详解

语法location [|~|~*|^~] /uri/ {...}规则 &#xff1a; 表示精确的URI匹配(有兴趣的同学可以看一下url和uri的区别)&#xff5e;&#xff1a; 表示区分大小写的正则匹配&#xff5e;*&#xff1a;表示不区分大小写的正则匹配!~ && !~*&#xff1a;表示区分大小写不匹…

java要频繁调用容器时_Java知识点梳理

1、Struts2和SpringMVC的区别(1)设计理念&#xff1a;前者为有状态的Action(均为多例)&#xff0c;Action对象属性字段承载请求、响应&#xff0c;后者一般为无状态的Controller&#xff0c;请求直接封装到方法的参数中&#xff1b;(2)集中访问点不同&#xff1a;都属于前端控制…

基于busybox的Linux小系统制作 (initrd)

我们有时候有需要在busybox基础上&#xff0c;制作linux&#xff0c;可是却不知道具体怎么做&#xff0c;这里将对基于busybox的linux小系统制作做出详细的步骤说明。准备环境&#xff1a;1、一个Redhat完整系统的虚拟机&#xff0c;本次实例使用的是Redhat Enterprise Linux 5…

Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。

Log4j进行日志的数据库持久化&#xff0c;说SQL语法错误。。。在properties的配置中。。。。log4j.appender.db org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.db.BufferSize1log4j.appender.db.drivercom.mysql.jdbc.Driverlog4j.appender.db.URLjdbc:mysql://localhost…

实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光

汽车前照明大灯升级案例车型&#xff1a;马自达6灯泡色温&#xff1a;5600K透镜案例&#xff1a;米石激光 TMF激光原车灯泡型号&#xff1a;H1 H1雾灯&#xff1a;H3原车瓦数&#xff1a;80-100W升级方式&#xff1a;支架安装方式&#xff1a;有密封胶性质&#xff1a;热LED解码…

matlab欧拉法程序,欧拉法matlab程序.doc

欧拉法matlab程序.doc 1.Euler法function[x,y]naeuler(dyfun,xspan,y0,h)xxspan(1):h:xspan(2);y(1)y0;forn1:length(x)-1y(n1)y(n)h*f(dyfun,x(n),y(n));endxx ;yy ;x10:0.2:1;y1(12*x1).^0.5;plot(x,y,x1,y1)>>dyfuninline( y-2*x/y );[x,y]naeuler(dyfun,[0,1],1,0.2)…

dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...

一、 环境的准备关闭两台虚拟机的SELinux[rootsvr7 ~]# setenforce 0 #修改当前运行模式[rootsvr7 ~]# getenforce #查看当前运行模式Permissive[rootsvr7 ~]# vim /etc/selinux/config #永久修改SELINUXpermissive设置两台虚拟机防火墙[rootsvr7 ~]# firewall-cmd …

linux查看php日志命令,linux查看日志的三种命令是什么,linux查看进程命令

linux查看日志的三种命令是什么Linux查看日志的三个命令是什么&#xff0c;linux查看日志有三个命令&#xff1a;1。查看实时更改日志&#xff0c;代码为[tail-f filename]&#xff1b;2.搜索关键字附近的日志代码为[cat-n filename | grep ‘ keyword ‘]&#xff1b;3.输入编…

控制器对应view生命周期

一、控制器view创建的六种方式 1.有没有同名xib创建2.通过 storyboard 创建3.有指定xib情况下创建4.有同名xib情况5.有同名去掉controll的情况6.loadveiw 二、创建控制器view的优先级三、控制器view加载顺序0、- (void)loadView …

jQuery全屏滚动插件fullPage.js

演 示 下 载 简介 如今我们经常能见到全屏网站&#xff0c;尤其是国外网站。这些网站用几幅很大的图片或色块做背景&#xff0c;再添加一些简单的内容&#xff0c;显得格外的高端大气上档次。比如 iPhone 5C 的介绍页面&#xff08;查看&#xff09;&#xff0c;QQ浏览器的官网…

simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP?

一、前言之前在聊到 App 网络优化时&#xff0c;聊到通过 HTTPDNS 替换掉传统的 DNS 解析&#xff0c;来达到网络优化的效果。其中提到 DNS 解析&#xff0c;是支持 UDP 和 TCP 双协议的。但是细心的朋友通过 wireshark、sniffer、tcpdump 等抓包工具分析&#xff0c;会发现基本…

php ip2long mysql,PHP基于ip2long实现IP转换整形

如何将四个字段以点分开的IP网络址协议地址转换成整数呢&#xff1f;PHP里有这么一个函数ip2long.比如echo ip2long("10.2.1.3");?>我们将得到167903491这是如何计算的&#xff0c;目前我知道有两个算法。其一function ip2int($ip){//我们先把ip分为四段,$ip1,$i…

查看你某条sql是哪个用户执行的_django_debug_toolbar:查看访问某个页面执行sql的详细...

django_debug_toolbar 是django的第三方工具包&#xff0c;给django扩展了调试功能&#xff0c;包括查看执行的sql语句&#xff0c;db查询次数&#xff0c;request&#xff0c;headers&#xff0c;调试概览等。1、官方推荐的安装方式是&#xff1a;pip install django-debug-to…

unzip 解压_每天一条Linux命令(11) unzip (超详细)

在Linux系统中&#xff0c;命令 unzip 用于解压zip命令或其他压缩软件压缩的zip格式文件。语法&#xff1a;unzip [选项] [压缩文件]常用参数说明&#xff1a;-o 解压时不提示是否覆盖文件-v 解压时显示详细信息-d 指定解压目录-l 不解压&#xff0c;只显示压缩文件内所包含的…

poi导出Excel(分行单元格颜色设置,字体设置,合并单元格,插入图片)

这是一个日报导出功能的代码;图片是用JfreeChars生成好的&#xff0c;话不多少 看代码 public String excelExport(HttpServletRequest request,HttpServletResponse response,CarSaledailyDTO carSaledailyDTO){//获取需要导出的报表数据     List<List<List>>…

vim 复制一行并且粘贴_Vim常用命令2之文本操作

文本操作无非增删改查&#xff0c;搜索&#xff0c;替换&#xff0c;复制粘贴&#xff0c;总结有如下命令&#xff08;正常模式下&#xff09;九四干&#xff1a;Vim常用命令1之移动光标​zhuanlan.zhihu.com1. 增1.1 行内插入i 光标之前插入I 行首插入a光标之后插入A 行末插入…

数据访问增删改查之单项查询

封装类 <?php //纯php,可以删掉html代码直接写 //封装类&#xff0c;这样用起来方便&#xff0c;不必每次都去再写了 //用驼峰法命名类名&#xff0c;首字母大写 class ChaXun { public $host"localhost";//数据库地址,可以直接赋值为"localhost"pu…

import是引进外部函数吗_vue3已正式发布,你学了吗

慌慌张张,匆匆忙忙,vue2还没用好,vue3就来了&#xff1f;&#xff1f;&#xff1f;&#xff1f;真的学不动了.......嘴上说着学不动,只见有的人在偷偷的在学习&#xff0c;我也利用假期看了看vue3...,倒吸一口气&#xff0c;还好差别并不是很大。别问我什么原理&#xff0c;底层…