Я на самом деле пытаюсь загрузить файл (> 5M) с помощью apache HttpClient 3.1 через MultipartRequestEntity с java 1.4 в среде с низким объемом памяти, поэтому увеличение кучи Java невозможно
У меня есть файл, разбитый намного частей, мне просто нужно добавить все данные каждой части в запрос, я мог бы получить файл без разделения тоже
Реальная проблема заключается в том, что запрос, который я создаю, вызывает переполнение памятиЕсть ли способ избежать этого и иметь возможность отправить этот запрос сразу?
Это то, что у меня есть на самом деле, мне нужно добавить байты к части (разновидность части [0].write (data)) или получить поток для записи без загрузки в память, я не знаю, возможно ли это на самом деле
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
post.setContentChunked(true);
try {
Part[] parts = new Part[fileNames.size()];
String fileName = "sample.pdf";
for(int i = 0; i<fileNames.size();i++){
File file = Util.getFile(fileNames.get(i));
FileInputStream is = new FileInputStream(file);
byte[] fileBytes = IOUtils.toByteArray(is);
parts[i] = new FilePart("file", new ByteArrayPartSource(fileName, fileBytes) , "application/octet-stream", post.getRequestCharSet());
is.close();
is = null;
fileBytes = null;
}
MultipartRequestEntity requestEntity = new MultipartRequestEntity(parts, post.getParams());
post.setRequestEntity(requestEntity);
int statusCode = client.executeMethod(post);
Другая возможность - HttpUrlConnection записывает BufferedWriter, но этотакже выдают OutOfMemory при записи на него