Java学习笔记(二十四):微信获取临时素材,然后存到oss

来源:互联网 发布:淘宝公示30天是啥用途 编辑:程序博客网 时间:2024/06/06 17:21

开始获取临时素材时,遇到好多问题,下面是问题总结:
1、不知道调用”获取临时素材”接口返回的是什么东西,其实就是返回图片数据流,如果直接用浏览器打开链接(即该接口),就会提示下载图片
2、获取临时素材,返回的信息头部的Content-type是application/json,是因为出错了,可以通过BufferReader读取获取的InputStream,换成字符串,就会提示错误码和错误信息,我这里因为接口地址url写错,然后一直提示access_token无效(地址错误不应该访问不到吗,为啥提示access_token无效,这个还不清楚)。
3、整个流程不懂,其实不难,就是先打开本地图片,然后上传到微信服务器,再获取临时素材,最后上传到oss,下面是oss上传的代码,和前台选择图片并调用后台程序进行上传的脚本
例子:OSS.java

package com.prositech.utils;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.Date;import com.aliyun.oss.OSSClient;import com.google.gson.JsonObject;public class OSS {public static void main(String[] args) throws FileNotFoundException{    String unionid = "*********************";    String media = "***********************";    String accessToken = "***********************";     //默认有效期7200    upload(unionid,media,accessToken);}public static String upload(String unionid,String media,String accessToken) {           // endpoint以杭州为例,其它region请按实际情况填写            String endpoint = "http://oss-cn-beijing.aliyuncs.com";            // accessKey请登录https://ak-console.aliyun.com/#/查看            String accessKeyId = "****************";            String accessKeySecret = "******************";            String bucketName = "11j";            //这里,图片名字不能写死,得用变量替代,否则上传到阿里云oss后,图片提示损坏,打不开            String key = "clothes/wardrobe/"+unionid+"/"+media+".jpg";            // 创建OSSClient实例            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);           // 拼接请求地址              String requestUrl = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";              requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken).replace("MEDIA_ID", media);              System.out.println(requestUrl);              try {                  URL url = new URL(requestUrl);                  HttpURLConnection conn = (HttpURLConnection) url.openConnection();                  conn.setDoInput(true);                  conn.setRequestMethod("GET");                  conn.connect();                InputStream input = conn.getInputStream();                System.out.println(conn.getResponseMessage());                System.out.print(conn.getContentType());                ossClient.putObject(bucketName, key, input);                conn.disconnect();              } catch (Exception e) {                  System.out.println(e);              }              return "success";          }  }

下面是前台的脚本

<script>        function wxScan() {         wx.scanQRCode({            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,            scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有            success: function (res) {                var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果                window.location.href=result;            }        });      }    function wxChooseImage(cloth)    {        var accessToken = $("#access_token").attr("value");        wx.chooseImage({            count: 1, // 默认9            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有            success: function (res) {            var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片            if(cloth == 1)            $("#coat").attr("src",localIds);            else                $("#paint").attr("src",localIds);            //上传图片到微信服务器,然后从微信服务器转存到阿里云            wx.uploadImage({                localId: localIds[0], // 需要上传的图片的本地ID,由chooseImage接口获得                isShowProgressTips: 1, // 默认为1,显示进度提示                success: function (res) {                var serverId = res.serverId; // 返回图片的服务器端ID                $("#serverId").attr("value",serverId);                $.ajax({                    url:'ido.action/uploadImage?media='+serverId+'&accessToken='+accessToken,                    type:"get",                    success:function(data){                    },                    error:function(error){                        alert(error['responseText']);                    }                 });                }            });        }        });    }</script>
0 0
原创粉丝点击