ここでは android において、base64エンコードされた文字列を TCP/IP で受信して、base64デコードで復元したデータをファイルに出力するサンプルコードを掲載しています。
スポンサーリンク
base64デコードしてファイルに出力する
TCP/IP で受信した文字列をbase64デコードしてファイルに出力するサンプルコードです。詳細はサンプル中のコメントを参照ください。
// TCP受信スレッド new Thread(new Runnable() { @Override public void run() { try { // TCPでポート番号21111で待ち受け(バインド+リッスン) ServerSocket tcp = new ServerSocket(21111); // アクセプト Socket sock = tcp.accept(); String message; StringBuilder messageBuilder = new StringBuilder(); // 受信データを文字列としてすべて読み込み BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())); while ((message = in.readLine()) != null){ messageBuilder.append(message); } // 切断 sock.close(); // 待ち受け終了 tcp.close(); // 受信した文字列をbase64デコード byte[] decodedByte = Base64.decode(messageBuilder.toString(), 0); // Bitmap形に変換する場合 //Bitmap bmp = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); // 外部ストレージのピクチャディレクトリに保存する /* * AndroidManifest.xml で次の通り外部記憶域へのファイル出力を許可する * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> */ String fpath = Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_PICTURES + "/ok.png"; // ファイルにbase64デコードしたバイト配列を書き込み FileOutputStream fos = new FileOutputStream(fpath); fos.write(decodedByte, 0, decodedByte.length); // ディスク書き込み+クローズ fos.flush(); fos.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } }).start();
送信側のサンプルは C# ですが、以下のリンクから確認できます。よろしければどーぞ。
[C#] 画像ファイルをbase64エンコードしてTCP/IPで送信する(Convert.ToBase64String)