iアプリ上で撮影した画像をサーバに送信する

iアプリ上で起動したカメラの画像をサーバにアップロードする部分のコーディングです。
といっても、カメラ画像をスクラッチパッドに保存する時の手順と同じです。

私自信JAVAに不慣れな為、ご参考程度にして下さい。
下記コーディングで、サーバに画像データが送信されます。
サーバ側ではデータ受信用のCGIが必要になります。
下記では、upload.cgiがそのCGIになります。

----
/* カメラの起動&撮影は既に済んでいるものとします。
   本当に送信する部分のみを抜粋しています。 
   Cameraオブジェクト名は「myCamera」です。*/
HttpConnection conn = null;
OutputStream out = null;
InputStream in = null;
try {
	// カメラ画像を入力ストリームとして取得
	in = myCamera.getInputStream(0);

	// カメラ画像のバイト数を取得
	long nLen = myCamera.getImageLength(0);
	// int型にキャスト
	int w_length = (int)nLen;
	// 画像データをバイト配列に代入
	byte [] w_data = new byte[w_length];

	// 呼び出すCGIとHTTPを設定
	String url = new String(getSourceURL()+"../cgi-bin/upload.cgi");
	conn = (HttpConnection)Connector.open(url,Connector.READ_WRITE,true);
	conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
	conn.setRequestMethod(HttpConnection.POST);

	//送信
	// OutpuStreamへの出力ストリームを取得
	out = conn.openOutputStream();
	// InputStreamからOutputStreamへ順次書き出し
	while ((w_length = in.read(w_data)) != -1 ) {
		out.write(w_data,0,w_length);
	}

	// 各種接続をクローズ
	in.close();
	out.close();

	// 接続
	conn.connect();

	conn.close();
}
catch (Exception e) {
	try {
		if (conn  !=null) conn.close();
		if (in !=null) in.close();
		if (out!=null) out.close();
	}
	catch (Exception e2) { }
	System.out.println("use err:"+e);
}
----

ちなみに、データを受信するCGIの方は、Perlでよければ下記のコードになります。

----
#!/usr/bin/perl

## 設定

# 画像を保存するディレクトリ
# このプログラムからの相対パス
# 最後は/で閉じる
$img_dir = "./image/";

# 画像ファイル名
$filename = "sample.jpg";

## 設定ここまで

## メイン処理
&getdata;
&imgout;

## データの受信
sub getdata {
	binmode(STDIN);
	if ( $ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); }
	else { $buffer = $ENV{'QUERY_STRING'}; }
}

## JPG画像の書き出し
sub imgout {
	open(IMGOUT,">$img_dir$filename");
	binmode(IMGOUT);
	print IMGOUT $buffer;
	close(IMGOUT);
}
----

Copyright©2003 ken. All Rights Reserved.