1. 程式人生 > >有關獲取並儲存微信頭像到本地伺服器

有關獲取並儲存微信頭像到本地伺服器

在使用者授權登入時,會獲取到使用者包括頭像在內的部分資訊(授權獲取資訊流程詳見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<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";

}

}