Zdecydowanie radzę użyć jednego z istniejących modułów, które ludzie zbudowali do obsługi przesyłania plików wieloczęściowych. Przesyłanie plików Commons jest jednym z bardziej popularnych, proponuję zajrzeć do niego (przykład użycia tutaj ).
Twój kod jest dość niechlujny i mieszasz pracę z tablicami bajtów i ciągami w sposób, który z pewnością spowoduje błędy. To:
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));
jest szczególnie owłosione. W każdym razie, jeśli nalegasz, aby zrobić to sam, powinieneś uporządkować swój kod, nie mieszaj pracy z ciągami i tablicami bajtów (pamiętaj, że jeden znak w ciągu niekoniecznie jest tylko jednym bajtem). Nie polecam tego jednak, chyba że jest to dla ciebie pouczające doświadczenie. W takim przypadku spędzę trochę czasu, aby spróbować znaleźć w Internecie przykładowy kod do obsługi formularzy wieloczęściowych.