发布图片

最多可添加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("");

$('#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参数不能错误

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

  1. ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地

    2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html> <html lang="en"> <head ...

  2. php微信拍照图库js接口,微信JSSDK 实现打开摄像头拍照再将相片保存到服务器

    在微信端打开手机摄像头拍照,将拍照图片保存到服务器上需要使用到微信的JSSDK接口,主要使用到了拍照或从手机相册中选图接口(chooseImage),上传图片接口(uploadImage) 参考资料: ...

  3. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  4. 微信js-sdk图片上传下载——java完整流程

    最近做的一个项目刚好用到微信js-sdk的图片上传接口,在这里做一下总结. 在这里能知道使用js api的基本配置https://mp.weixin.qq.com/wiki?t=resource/re ...

  5. 【微信开发】上传下载多媒体文件

    最近一段时间,开始入手了微信开发.感觉挺有意思的,虽然目前还是遇到了许多解决不了的问题. 上传下载多媒体文件,这个作为高级接口的一部分功能,可能使用的人并不多,所以现在网上关于这个接口的使用教程很少. ...

  6. java微信上传本地视频教程_java微信开发之上传下载多媒体文件,java上传下载_PHP教程...

    java微信开发之上传下载多媒体文件,java上传下载 回复图片.音频.视频消息都是需要media_id的,这个是需要将多媒体文件上传到微信服务器才有的. 将多媒体文件上传到微信服务器,以及从微信服务 ...

  7. 微信公众平台开发 上传下载多媒体文件

    1 微信公众账号在回复图片.语音.视频的时候,将使用media_id来调用相关文件,很多朋友咨询这个如何开发实现.本文将介绍在微信公众平台开发过程中,如何上传下载多媒体文件. 2 3 4 5 一.上传 ...

  8. android多文件上传错误,微信多图上传解决android多图上传失败问题

    微信提供了文件上传的方法wx.uploadFile来上传我们的图片 wx.chooseImage({ success: function(res) { var tempFilePaths = res. ...

  9. 仿微信图片选择及多张图片上传

    最近做项目涉及到图片上传这块,多张图片上传是用xutils实现的,图片选择.预览是参考了微信图片选择的demo,先上图: 这是网上参考了仿微信图片上传实现的,这里就不多讲了,文章底部有下载链接,下面介 ...

最新文章

  1. eclipse里面M2_REPO引用(Maven2安装总结)
  2. Linux下,如何给PHP安装pdo_mysql扩展
  3. 使用 VisualVM 进行性能分析及调优
  4. Swift: 可变参数
  5. UA MATH636 信息论2 数据压缩
  6. sql2008 查询某个表被那些存储过程用到
  7. 【Python】一行python代码利用人工智能去除工作照背景
  8. redis的五种数据结构
  9. html (align 、placeholder )
  10. java jsr_Java EE 7中包含哪些JSR?
  11. 移动互联网的发展趋势ios与android哪更有前景,移动互联网是什么?移动互联网现状,发展趋势及前景...
  12. SSL/TLS深度解析--测试TLS/SSL加密
  13. ajax 请求与响应,实例解读ajax发送请求与数据响应
  14. python网络编程学习笔记(9):数据库客户端
  15. JavaScript函数实例(一)
  16. android 斜边_斜边计算器app下载|斜边计算器安卓版下载_v1.0.1_9ht安卓下载
  17. 删除oracle安装目录,Oracle 卸载
  18. visio画箭头、画点线,各种连接头
  19. pycharm如何添加桌面图标_桌面图标全变成pycharm了怎么办?
  20. 干货丨面向新基建,安全厂商都准备了哪些前瞻性的“武器”?

热门文章

  1. reset java_Java PushbackReader reset()用法及代码示例
  2. Spring Boot 热部署 devtools模块
  3. php+错误+处理,PHP 错误处理手记!!!!!
  4. 【OpenCV 例程200篇】12. 图像通道的合并(cv2.merge)
  5. inputstreamreader 编码不完整_素材编码对剪辑效率的影响
  6. mysql添加用户权限报1064 - You have an error in your SQL syntax问题解决
  7. 【数据库】Mysql的REPLACE()函数替换字符串
  8. 【数据仓库】OLTP系统和OLAP系统区别
  9. 数据库MySQL/mariadb知识点——数据类型
  10. stixel提升思路总结