今天在做Android專案的時候遇到一個問題,需求是向伺服器上傳一張圖片,要求把圖片轉化成圖片流放在 json字串裡傳輸。
類似這樣的: {"name":"jike","age":"20","pic":"圖片流"} ,
把圖片轉化為圖片流要用到 Base64 的技術。
1、Base64 的作用
主要不是加密,它主要的用途是把一些二進位制數轉成普通字元用於網路傳輸。
由於一些二進位制字元在傳輸協議中屬於控制字元,不能直接傳送需要轉換一下就可以了。
2、如何獲得BASE64 程式碼,有兩種方式
方式一:解決eclipse中無法直接使用Base64Encoder的問題
- 今天要使用Base64Encoder,卻發現在Eclipse中無法找到該類,google了哈,原來Base64Encoder並不屬於JDK標準庫範疇,但是又包含在了JDK中。
- 解決方法:按照如下方法設定Eclipse匯入%JAVA_HOME%\jre\lib目錄下的rt.jar包即可,Project->Properties,選擇Java Build Path設定項,再選擇Libraries標籤,
- Add External Jars新增%JAVA_HOME%\jre\lib\rt.jar就可以使用啦!
方式二: 下載原始碼,然後把程式碼匯入自己的專案中
csdn下載地址: http://download.csdn.net/detail/yanzi2015/8685199
3、Base64對字串進行編碼和解碼
package com.android20; import sun.misc.BASE64Decoder; public class Bian { //將 s 進行 BASE64 編碼 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); } //將 BASE64 編碼的字串 s 進行解碼 public static String getFromBASE64(String s) { if (s == null) return null; BASE64Decoder decoder = new BASE64Decoder(); try { byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception e) { return null; } } }