私はクライアントサーバー通信に取り組んでいます。ユーザーはギャラリーから画像を選択できます。選択した画像は、ローカル DB とサーバー DB の 2 つの場所に保存されます。ユーザーが画像を保存すると、選択した画像はパス (文字列) でローカル データベースに保存され、サーバー データベースにも保存されます。問題は、画像バイト配列を取得して文字列にエンコードし、画像をサーバー側に渡す方法がわからないことです。
ローカル DB : 画像 -> パス(文字列) (これで完了) サーバー DB : 画像 -> バイト -> 文字列 -> サーバーに送信
これがコードです..
Bundle extras = getIntent().getExtras();
if (extras != null) {
id=extras.getInt("id");
inputname.setText(extras.getString("name"));
inputnote.setText(extras.getString("note"));
image = extras.getString("blob");
//Convert image into string to save path in local DB
BitmapFactory.Options op=new BitmapFactory.Options();
op.inSampleSize=8;
yourSelectedImage = BitmapFactory.decodeFile(image, op);
inputphoto.setImageBitmap(yourSelectedImage);
}
saveItem メソッドで blob を設定する方法..?
private void saveItem() {
// Client-Server - Start //////////////////////////////////////
String name = inputname.getText().toString();
String description = inputnote.getText().toString();
// Encode the image file to String !! by using Base64
String encodedImage = Base64.encodeToString(blob, Base64.DEFAULT);
// Building Parameters
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair("name", name));
params1.add(new BasicNameValuePair("description", description));
params1.add(new BasicNameValuePair("photo",encodedImage));
Log.v("log_tag", System.currentTimeMillis()+".jpg");
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params1);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);
Log.v("log_tag", "In the try Loop" );
if (success == 1) {
// closing this screen
finish();
} else {
// failed to create product
}
} catch (JSONException e) {
e.printStackTrace();
}
前もって感謝します。