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.