マルチパートファイルのアップロード処理のために人々が構築した既存のモジュールの1つを使用することを強くお勧めします。 Commons Fileupload はより人気のあるものの1つであるため、調査することをお勧めします(使用例こちら )。
あなたのコードはかなり乱雑で、間違いを確実に作成する方法でバイト配列と文字列の操作を混ぜています。これ:
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
...
fileOut.write(dataBytes, startPos, (endPos - startPos));
特に毛深いです。とにかく、自分でそれを行うことを主張する場合は、コードをクリーンアップする必要があります。文字列とバイト配列の操作を混在させないでください(文字列内の1文字は必ずしも1バイトだけではないことに注意してください)。これがあなたにとっての学習経験でない限り、私はそれをお勧めしません。その場合、私はインターネット上でマルチパートフォーム処理用のサンプルコードを探すために時間を費やします。