通过 WxMpUser wxMpUser = WeixinUtil.getUserInfo(code);获取用户信息后,在通过
String openid = wxMpUser.getOpenId();获取用户的openid,判断表中是否存在该用户,若不存在,
则说明该用户是第一次授权登录,我们需要将用户包括头像在内的信息保存下来才行,
String avatar = openid + ".jpg";
Utils.getImageByUrl(wxMpUser.getHeadImgUrl(), (String) property.get("avatar"), avatar);
此处调用Utils中的 getImageByUrl方法。传入参数为wxMpUser.getHeadImgUrl()是获取的用户信息中包含的一个url,该url指向的是一个图片,(String) property.get("avatar")是服务器存放头像的位置,通过读取gbtags.properties中的信息获取,
avatar=D:/apache-tomcat-7.0.52/apache-tomcat-7.0.52/webapps/wx-qa/networks/avatars/是配置文件gbtags.properties中保存头像图片的服务器地址。
avatar是保存到本地服务器上的图片名称。
进入Utils.getImageByUrl方法后,首先构造一个URL,该URL是指向图片的URL
URL url = new URL(imageurl);
之后打开连接,定义输入流,定义一个输出流,输出地址是传入的本地服务器将要存放头像的地址,将对应url中的内容读取到内存中,再将这些内容写进服务器。最后关闭所有输入输出流,return一个success表示传输成功,若出现异常,则return一个error。
/**
* 图片下载到本地服务器
*/
public static String getImageByUrl(String imageurl, String savepath, String name) {
try {
// 构造URL
URL url = new URL(imageurl);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// Map
// getProperties("/gbtags.properties");
File file = new File(savepath);// (String) property.get("ewmPath"));
if (!file.exists()) {
file.mkdirs();
}
// 输出的文件流
OutputStream os = new FileOutputStream(savepath + name);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
return "success";
} catch (Exception e) {
return "error";
}
}