有關獲取並儲存微信頭像到本地伺服器
通過WxMpUser wxMpUser = WeixinUtil.getUserInfo(code);獲取使用者資訊後,在通過
String openid = wxMpUser.getOpenId();獲取使用者的openid,判斷表中是否存在該使用者,若不存在,
則說明該使用者是第一次授權登入,我們需要將使用者包括頭像在內的資訊儲存下來才行,
String avatar = openid + ".jpg";
Utils.getImageByUrl(wxMpUser.getHeadImgUrl(), (String) property.get("avatar"), avatar);
(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<String, Object> 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";
}
}