此為介紹Android 上傳檔案如何用base64 String來上傳的方法

先看一下android 處理圖片轉換為base64上傳的流程圖

在開始之前記得先在你android專案的AndroidManifest.xml中加入充許使用網路的權限

<uses-permission android:name="android.permission.INTERNET"/>

在此我們需要額外下載base64.java檔

連結到 http://iharder.sourceforge.net/current/java/base64/

下載base64-v2.3.7.zip解壓後會得到Base64.java檔將此檔案加入你的android專案中

加入後此檔案會出現錯誤,請在第一行加上你android專案的package

如下圖所示

可在此下載java程式碼:http://blog.sptechnolab.com/wp-content/uploads/2011/03/bitmap.pdf

程式碼如下:

public class upload extends Activity {

InputStream is;

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),

R.drawable.a1);

ByteArrayOutputStream bao = new ByteArrayOutputStream();

bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao);

byte [] ba = bao.toByteArray();

String ba1=Base64.encodeBytes(ba);

ArrayList<NameValuePair> nameValuePairs = new

ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("image",ba1));

try{

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new

HttpPost("http://10.0.2.2:80/android/base.php");

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);

  /* http response 200 = ok */
  Log.v(TAG, "http response status: "+httpResponse.getStatusLine().getStatusCode());
  if (httpResponse.getStatusLine().getStatusCode() == 200) {

  /* get data from server url */
  String strResult = EntityUtils.toString(httpResponse.getEntity());
  Log.d(TAG, "get Result:"+strResult);
  } else {
   //tools.showInfo("upload file error: "+httpResponse.getStatusLine().getStatusCode());
  }

}catch(Exception e){

Log.e("log_tag", "Error in http connection "+e.toString());

}

}

}

 server 程式碼以php為範例:http://blog.sptechnolab.com/wp-content/uploads/2011/03/uploadphp.pdf

 程式碼如下:

<?php

$base=$_REQUEST['image'];

echo $base;

// base64 encoded utf-8 string

$binary=base64_decode($base);

// binary, utf-8 bytes

header('Content-Type: bitmap; charset=utf-8');

// print($binary);

//$theFile = base64_decode($image_data);

$file = fopen('test.jpg', 'wb');

fwrite($file, $binary);

fclose($file);

echo '<img src=test.jpg>';

?>
arrow
arrow

    狼翔月影 發表在 痞客邦 留言(1) 人氣()