Tôi thực sự khuyên bạn nên sử dụng một trong những mô-đun hiện có mà mọi người đã xây dựng để xử lý tải lên tệp nhiều phần. Commons Fileupload phổ biến hơn, tôi khuyên bạn nên xem xét nó (ví dụ sử dụng tại đây ).
Mã của bạn khá lộn xộn và bạn đang trộn lẫn làm việc với mảng byte và chuỗi theo cách chắc chắn sẽ tạo ra lỗi. Cái này:
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));
đặc biệt có nhiều lông. Dù sao, nếu bạn khăng khăng muốn tự mình làm điều đó, bạn nên dọn dẹp mã của mình, không kết hợp làm việc với Chuỗi và mảng byte (hãy nhớ, một ký tự trong chuỗi không nhất thiết chỉ là một byte). Tuy nhiên, tôi không khuyên bạn nên sử dụng nó, trừ khi đây là một kinh nghiệm học tập cho bạn. Trong trường hợp đó, tôi sẽ dành một chút thời gian để thử và tìm một số mã mẫu trên internet để xử lý biểu mẫu nhiều phần.