有关获取并保存微信头像到本地服务器

在用户授权登录时,会获取到用户包括头像在内的部分信息(授权获取信息流程详见wx-qa内容)

通过 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 property =

// 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";

}

}




你可能感兴趣的:(有关获取并保存微信头像到本地服务器)