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
- Java学习笔记(二十四):微信获取临时素材,然后存到oss
- 微信公众平台开发【素材管理】获取临时素材
- 微信上传网络图片到临时素材
- 微信上传下载临时素材
- 解决微信上传临时素材
- 微信新增临时素材-图片
- 微信公众平台开发【素材管理】上传临时素材
- 微信公众平台开发【素材管理】上传临时素材
- 微信公众平台开发【素材管理】上传临时素材
- php 微信开发之新增上传/获取下载临时素材
- 微信上传临时素材到httpclient上传文件引发的问题
- 学习笔记(二十四)
- 【企业微信开发笔记】调用上传临时素材文件接口报empty media data错误
- java学习笔记(二十四)抽象类
- java学习笔记(二十四)注册登录系统
- 微信学习笔记之二(微信jssdk获取配置权限流程)
- 微信公众号开发者模式Java笔记-管理素材
- java学习笔记(十四)
- 那些让我哭让我笑的编程错误!持续更新,错了就写上来!
- faster rcnn 源码解读
- Python实现KNN
- Android 动画原理简析
- 小C语言--词法分析程序
- Java学习笔记(二十四):微信获取临时素材,然后存到oss
- ios developer tiny share-20160921
- appcan-学习随记(界面通信,传值)
- centos 6.5 安装 Erlang
- C#中的Abstract
- HDU 4335What is N?
- 大端序、小端序、网络序
- 如何离线发布百度地图
- HttpURLConnection上传图片到服务器