Důrazně doporučuji, abyste použili jeden ze stávajících modulů, které lidé vytvořili pro zpracování vícedílných souborů. Nahrání souboru Commons je jedním z nejpopulárnějších, doporučuji vám se na něj podívat (příklad použití zde ).
Váš kód je dost chaotický a mícháte práci s bajtovými poli a řetězci způsobem, který jistě způsobí chyby. Toto:
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));
je zvláště chlupatý. Každopádně, pokud trváte na tom, že to uděláte sami, měli byste svůj kód vyčistit, nesměšovat práci s řetězci a bajtovými poli (pamatujte, že jeden znak v řetězci nemusí být nutně jen jeden bajt). Nedoporučuji to však, pokud to pro vás není zkušenost s učením. V takovém případě bych strávil nějaký čas pokusit se najít na internetu nějaký příklad kódu pro zpracování vícedílných formulářů.