編輯:關於Android編程
在android項目中,很多情況下上傳頭像的需求,像qq,新浪微博,微信,飛信等很多應用都有這樣的功能。
之前我寫過的兩篇文章:andorid下從相冊選取/拍照選取一張相片並剪切和android下Bitmap和base64之間的轉換把他們綜合起來,就可以來實現頭像從相冊/拍照選取,後裁剪再上傳的功能
完整源碼下載
這裡我只貼出上傳圖片的方法代碼,至於怎麼獲取到獲取到圖片,請看andorid下從相冊選取/拍照選取一張相片並剪切
/*
* 上傳圖片
*/
public void upload(View view) {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
byte[] buffer = out.toByteArray();
byte[] encode = Base64.encode(buffer, Base64.DEFAULT);
String photo = new String(encode);
RequestParams params = new RequestParams();
params.put("photo", photo);
String url = "http://110.65.99.66:8080/jerry/UploadImgServlet";
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
try {
if (statusCode == 200) {
Toast.makeText(MainActivity.this, "頭像上傳成功!", 0)
.show();
} else {
Toast.makeText(MainActivity.this,
"網絡訪問異常,錯誤碼:" + statusCode, 0).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(MainActivity.this,
"網絡訪問異常,錯誤碼 > " + statusCode, 0).show();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}這樣一操作,圖片就會按Base64編碼格式傳送到服務器,而服務器端的代碼也是非常簡單的
package com.jerry.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class UploadImgServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
String photo = request.getParameter("photo");
try {
// 對base64數據進行解碼
byte[] decode = Base64.decode(photo);
File file = new File("e:\\decode.jpg");
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream out = new FileOutputStream(file);
out.write(decode);
out.flush();
out.close();
} catch (Base64DecodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
Android沉浸式狀態欄攻略
前言這裡不討論[沉浸式]這個詞用得好不好, 大家聽得懂就行. 這篇文章主要是我在實際項目中的一些經驗, 整理出來和大家分享, 歡迎探討. 由於實習一直是996, 沒時間做
微信怎麼清理緩存?微信清理緩存辦法?
很多用戶不知道,其實在隨著用戶使用微信的時間推移,微信應用會產生大量的緩存文件,這樣久而久之會造成手機內存不足的問題,並且在手機運行速度方面也有所影響,故此
Android編程實現向桌面添加快捷方式的方法
本文實例講述了Android編程實現向桌面添加快捷方式的方法。分享給大家供大家參考,具體如下:有時候為了使用方便,需要在桌面上添加快捷方式,下面是兩種添加快捷方式的方法:
Bluestacks安裝本地APK應用圖解教程
Bluestacks安卓模擬器要怎麼安裝自己下載到電腦上的本地APK文件呢?如果你沒有安裝360助手之類的軟件,Bluestacks默認會關聯電腦上的APK