配置并学习微信JS-SDK(2)—图片接口

  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://mp.weixin.qq.com/wiki/12/58bfcfabbd501c7cd77c19bd9cfa8354.html);=======折腾很久 发现订阅号没有上传下载多媒体文件接口,晕喔 也就是这能用它下载图片的接口了

    //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://jdhu.sinaapp.com

其他:

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

    • 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;
          }
      }

时间: 2024-12-13 20:18:48

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

微信js sdk上传多张图片

微信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.c

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

前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细说吧. 最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源,有需要的朋友可以随意修改和发布. CanTK(Canvas ToolKit)是一个开源的游

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

微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑,后面看到"config:ok"的时候真的算是石头落地,瞬间感觉世界很美好.. 这篇文章是微信开发的很多前置条件,包括了服务端基于JAVA的获取和缓存全局的access_token,获取和缓存全局的jsapi_ticket,以及前端配置授权组件封装,调用分享组件封装. 配置授权思路:首先根据

微信JS SDK开发 共享问题小结

首先,我要吐槽一下这个SDK,看了第一遍,完全不知所云,一会获取这个,一会获取那个,也没确切的告诉怎么获取. 和腾讯客服(拿钱不干事的好工作)讨教,人家不懂技术,不知道怎么解决,也没有相关技术人员对应这一块.总共费时 将近一周的时间才把这块弄懂.期间遇到的部分问题以及如何解决分享给大家,欢迎大家一起讨论并指正. 问题1:JS接口安全域名,你所有想要使用的微信接口,要在这个域名内部进行,不能在本地进行相关调试. 问题2:公众账号要求:必须是已经认证的. 问题3:配置config(PS:开启debu

微信JS SDK Demo

微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/weixin-js-sdk-demo.html 一.JS部分 wx.ready(function () { // 1 判断当前版本是否支持指定 JS 接口,支持批量判断 document.querySelector('#checkJsApi').onclick = function () { wx.

微信js sdk分享开发摘记java版

绑定域名和引入js的就不说了 废话不说直接上代码 1 public void share(HttpServletRequest request) throws Exception { 2 3 StringBuffer homeUrl = request.getRequestURL(); 4 String queryString =request.getQueryString(); 5 if(StringUtils.isNotBlank(queryString)){ 6 homeUrl.appen

微信JS SDK Demo 官方案例

转自:http://my.oschina.net/superkangning/blog/367484 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项. 一:html代码部分 ? 1 2 3 4 5 6 7 8 9

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

摘要: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.

微信JS SDK Demo使用说明

微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>微信JS-SDK Demo</title> <meta name="viewport" content="width=device-

微信JS SDK使用权限签名算法

jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据.正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取.由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket . 参考以下文档获取access_token(有效期7200秒,开发者必须在自己的