在StyleAI上厚積了這麼長時間,憋了這麼久,原本想憋個更大的,不過仍是薄發一次的好。java
3、直接使用別人的工程
android
文章:Android學習之客戶端上傳圖片到服務器
git
下載地址:https://download.csdn.net/download/wlj142/7594879github
能夠運行
web
2、在Eclipse中使用XUtils3組件
數組
文章:在Eclipse中導入XUtils3
服務器
把 jni\armeabi下面的 libwebpbackport.so文件 複製到 我的工程 jni\armeabi下面;網絡
把 xutils-3.3.36.jar 文件,複製到 libs 下面;框架
參考原文,按照原文指示一步一步地操做,會運行成功。async
建議使用3.3.36版本,3.5版本的JNI文件不存在,可能發生了重大變動
GitHub:https://github.com/wyouflf/xUtils3
下載地址:http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.3.36/
1、安卓C/S圖片數據傳輸:APP端-將圖片傳輸至服務器端存儲
1.總體思路:
客戶端:
(1)將圖片信息轉化成byte數組;
(2)將圖片信息進行base64加密;
服務端:
(1)將加密字符串進行解密
(2)解密以後的字符串還原成byte數組
(3)將byte數組寫入到文件中
解密:
byte[] imageByteArray=HmsUtil.decodeBase64(changeHeadPic.getPic());
HmsUtil中的代碼:
public static byte[] decodeBase64(String encodeStr) {
return Base64.decode(encodeStr);
}
寫入到文件:
public static Boolean saveFile(byte[] fileByteArray, String path, String fileName) { BufferedOutputStream out = null; //標記文件保存是否成功 Boolean flag = true; try { out = new BufferedOutputStream(new FileOutputStream(path)); out.write(fileByteArray); out.flush(); } catch (Exception e) { flag = false; logger.error("保存文件失敗!", e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { } } } return flag; }
2、使用android-async-http框架傳輸base64加密圖片
android上傳圖片到服務器(使用base64字節流的形式經過 AsyncHttpClient框架傳輸)
組件:http://loopj.com/Android-async-http/
使用 http://loopj.com/android-async-http
下載地址:http://loopj.com/android-async-http/ 建議直接下載jar文件
package com.example.irisdetectyiyi; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import android.content.Context; import android.graphics.Bitmap; import android.util.Base64; import org.xutils.x; import org.xutils.http.RequestParams; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; public class dataG2Net { // 傳輸本地圖片和時間戳到網絡 // 獲取信息和時間戳到本地,同步顯示 public dataG2Net() { } public static void reg(final Context cont, Bitmap photodata, String regData) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 將bitmap一字節流輸出 Bitmap.CompressFormat.PNG 壓縮格式,100:壓縮率,baos:字節流 photodata.compress(Bitmap.CompressFormat.PNG, 100, baos); baos.close(); byte[] buffer = baos.toByteArray(); System.out.println("圖片的大小:" + buffer.length); // 將圖片的字節流數據加密成base64字符輸出 String photo = Base64.encodeToString(buffer, 0, buffer.length, Base64.DEFAULT); // photo=URLEncoder.encode(photo,"UTF-8"); RequestParams params = new RequestParams(); params.put("photo", photo); params.put("name", "woshishishi");// 傳輸的字符數據 String url = "http://10.0.2.2:8080/IC_Server/servlet/RegisterServlet1"; AsyncHttpClient client = new AsyncHttpClient(); client.post(url, params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, String content) { Toast.makeText(cont, "頭像上傳成功!" + content, 0).show(); } @Override public void onFailure(Throwable e, String data) { Toast.makeText(cont, "頭像上傳失敗!", 0).show(); } }); } catch (Exception e) { e.printStackTrace(); } // } }