测试地址:http://www.qq210.com/shoutu/android

  1. 检查图像接口
  2. 选择本地或拍照的图片
  3. 上传选择的图片
  4. 预览上传的图片
    //1.检查图像接口
    document.querySelector('#chooseImage').onclick = function() {
    log_msg('检查api');
    unvaild_api = [];
    wx.checkJsApi({
    jsApiList:[
    'chooseImage',
    'previewImage',
    'uploadImage',
    'downloadImage',
    ],
    success:function(res){
    log_msg('返回检查api的结果'); log_msg('1.判断检查api的结果');
    $.each(res.checkResult, function(k, v) { if (!v) {
    unvaild_api.push(k);
    return false;
    }
    }); if (unvaild_api.length > 0) {
    log_msg('存在无效api'+unvaild_api.join(', '));
    log_msg('存在无效api的结果'+unvaild_api.join(', '));
    return false;
    }
    log_msg('无无效api'); var images = {
    localIds: [],
    serverId: []
    }; //2.选择本地或拍照的图片
    wx.chooseImage({
    success: function (res) {
    log_msg("返回选定照片的本地ID列表或拍照图片ID"+JSON.stringify(res));
    images.localIds = res.localIds;
    log_msg('已选择 ' + images.localIds.length + ' 张图片');
    log_msg('图片地址: ' + images.localIds.join(', ')); //3.上传选择的图片(递归)
    var i = 0, length = images.localIds.length;
    var imgs_html = [];
    var upload = function(){
    log_msg("上传图片第"+i+'图片');
    wx.uploadImage({
    localId:images.localIds[i],
    success: function(res) {
    log_msg('记录res.serverId'+res.serverId);
    images.serverId.push(res.serverId);
    imgs_html.push('<img src="'+images.localIds[i]+'"/>');
    log_msg('已上传'+images.localIds[i]+i+'/'+length);
    //如果还有照片,继续上传
    i++;
    if (i < length) {
    upload();
    }
    else {
    //4.预览上传的图片
    $("#img_wrap").html(imgs_html.join(''));
    log_msg("上传成功");
    }
    }
    });
    }; log_msg("开始上传图片");
    upload();
    }
    });
    }
    });
    }
  5. 下载上传的图片(用上传下载多媒体文件接口下载原文件http://www.qq210.com/shoutu/android);=======折腾很久 发现订阅号没有上传下载多媒体文件接口,晕喔 也就是这能用它下载图片的接口了
    //4.显示下载后的相片
    var img_html = '';
    i = 0;//重置i
    var download = function(){
    wx.downloadImage({
    serverId:images.serverIds[i],
    success:function(res){
    log_msg('下载第'+i+'张图片的结果:'+JSON.stringify(res));
    img_html += '<img src="'+res.localId+'" />'; //如果还有下载的图片,继续下载
    i++;
    if (i < length) {
    download();
    }
    else{
    $("#img_wrap").html(img_html);
    } }
    });
    }
    log_msg("开始下载图片");
    download();
    1. 现在问题又来了,预览上传时的localId和下载后的localId区别在哪里?而这个下载后的localId的图片存储在哪里?有谁知道的请留言下?
    2. =>明白了:我换了手机再打开公众号,发现不是我下载的图片的手机是看不到图片的,换句话说就是,下载后的图片存在了点击下载的那部手机上,擦,微信服务器只保留3天照片,订阅号又下载多媒体文件没权限,之后也只能强制手机下载到本地保存了!哎!

demo地址:http://www.qq210.com/shoutu/android

demo效果:

其他:

  • 为了记录执行过程和调试代码,提交日志到服务器并记录日志

    • js部分

      var log_msg = function(msg){
      $.post('<?=site_url("log/index")?>', {msg:msg});
      }
    • php部分
      class Log extends SAE_Controller {
      
          public function index()
      {
      $msg = $this->input->post('msg');
      log_message('error', $msg);
      echo $msg;
      }
      }

配置并学习微信JS-SDK(2)—图片接口的更多相关文章

  1. 微信 JS SDK 的 chooseImage 接口在部分安卓机上容易造成页面刷新

    该问题的症状是,当调用 chooseImage 接口并选择拍照,选择照片确定之后,然后从相机返回后,当前web页面就刷新了一次,导致拍照的图片无法选择上传:但是如果直接从相册中选择图片,则不会出现这个 ...

  2. 微信JS SDK接入的几点注意事项

    微信JS SDK接入,主要可以先参考官网说明文档,总结起来有几个步骤: 1.绑定域名:先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.备注:登录后可在“开发者中心”查看对 ...

  3. 微信js sdk上传多张图片

    微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="111111111111 ...

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

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

  5. 微信JS SDK配置授权,实现分享接口

    微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...

  6. 微信js SDK接口

    微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...

  7. 微信JS SDK Demo 官方案例[转]

    摘要: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用 ...

  8. 微信JS SDK Demo

    微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/ ...

  9. 微信JS SDK Demo 官方案例

    微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享 ...

  10. 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(转)

    进行微信开发已经一阵子了,从最初的什么也不懂,到微信授权登录,分享,更改底部菜单,素材管理,等. 今天记录一下微信jssdk 的分享给朋友的功能,获取config接口注入. 官方文档走一下简单说:四步 ...

随机推荐

  1. 【转】git - 简明指南

    git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, españo ...

  2. Lattice Diamond安装

    1.下载:到Lattice官网 http://www.latticesemi.com/ 注册一个lattice的账号后就可以去下载Diamond,登陆后如下图,根据自己系统情况选择对应的版本,我用的是 ...

  3. hdoj 1541 Stars【线段树单点更新+最大值维护】

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. Eclipse的安装以及与Tomcat的集成

    1.下载indgo版本的Eclipse:http://www.eclipse.org(64位:eclipse-jee-indigo-SR2-win32-x86_64.zip) 2.解压到D:\Prog ...

  5. WPF ArrangeOverride与MeasureOverride

    1.MeasureOverride  是FrameworkElement.MeasureOverride 方法 当重写在派生类中,单位是对于子元素所需要布局的大小并确定FrameworkElement ...

  6. nginx lua 开发笔记

    获取 在lua代码中获取 location 正则的参数对应的变量 // location location ~/lua_http_2/(\w*.+) { } // lua local vars=ngx ...

  7. CGI与FastCGI 转

    CGI与FastCGI 当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html.事物总是不 断 ...

  8. (转载)OSI七层参考模型和TCP/IP四层参考模型

    Mallory   网络模型概念浅析 网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型. #只是一种设计==模型# Open System Interconnect的缩写,意为开放式系统互 ...

  9. Java基础知识强化之IO流笔记33:转换流之InputStreamReader的使用

    1. InputStreamReader的使用 InputStreamReader(InputStream is):用默认的编码读取数据 InputStreamReader(InputStream i ...

  10. C#中的两种debug方法

    这篇文章主要介绍了C#中的两种debug方法介绍,本文讲解了代码用 #if DEBUG 包裹.利用宏定义两种方法,需要的朋友可以参考下   第一种:需要把调试方法改成debug代码用 #if DEBU ...