抓取微信头像保存之后,过一段时间会出现头像失效问题,到现在还是不清楚微信头像地址失效规则,为了避免微信头像失效导致的头像显示问题,最好是微信头像上传到第三方云存储空间,这里用的是七牛云存储。
七牛云提供了一个方法:抓取网络资源到空间
文档地址:https://developer.qiniu.com/kodo/sdk/java
接口代码例子如下:
String userid = request.getParameter("userid");
String wxheadurl= request.getParameter("wxheadurl");
if(StringUtil.isEmpty(userid) || StringUtil.isEmpty(wxheadurl)){
return "error";
}
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region1());//Region.region1()和机房位置有关
//获取空间管理器
BucketManager bucketManager = new BucketManager(auth,cfg);
String bucket = "xxxx";//七牛云定义的bucket name,不是域名
String key = "headimg/"+DatetimeUtil.formatDate(new Date(),"yyyyMMdd")+"/"+userid+".png";//自定义生成的图片目录和名称
try {
// 要求url可公网正常访问BucketManager.fetch(url, bucketName, key);
// @param url 网络上一个资源文件的URL
// @param bucketName 空间名称
// @param key 空间内文件的key[唯一的]
FetchRet fetchRet = bucketManager.fetch(wxheadurl, bucket, key);
//System.out.println(fetchRet.key);
UserInfoModel model = new UserInfoModel();
model.setUserid(userid);
model.setWxheadurl("http://xxxxx.com/"+fetchRet.key);//http://xxxxx.com/域名和bucket对应
dao.updateUserWxheadurl(model);//更新用户头像地址
} catch (QiniuException e1) {
e1.printStackTrace();
//这里可以生成一个错误信息日志,以便数据补回
return "error";
}
return "success";
关于Region.region1()的选择
这样就能将微信头像同步到七牛云空间了。