Я пытаюсь использовать следующий код для загрузки файла в rest api. Этот код отлично подходит для файлов размером до 20 МБ, но большие файлы будут давать OutOfMemoryError
. Я пытаюсь передать запрос и использовать запрос с множественной формой, так что мне не нужно хранить весь файл в памяти, но, может быть, куски слишком большие? Любая помощь приветствуется.Загрузка файла Android Spring OutofMemory
final File file = new File(filePath);
HttpHeaders header = new HttpHeaders();
header.add("x-haiku-auth", HaikuAPI.getAuthHeader());
header.setContentType(MediaType.MULTIPART_FORM_DATA);
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(
"https://" + HaikuAPI.getDomain() + "/api/assignments")
.pathSegment(assignmentID + "", "submit");
URI url = builder.build().toUri();
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("message[subject]", "Assignment Completed");
parts.add("message[body]", message);
parts.add("message[assignment_id]", assignmentID + "");
Uri uri = Uri.fromFile(file);
InputStreamResource res = new InputStreamResource(context.getContentResolver().openInputStream(uri)) {
@Override
public String getFilename() throws IllegalStateException {
return file.getName();
}
@Override
public long contentLength() throws IOException {
return file.length();
}
};
parts.add("files[][file]", res);
parts.add("files[][filename]", file.getName());
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setChunkSize(1024);
RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
HttpEntity<Object> request = new HttpEntity<Object>(parts, header);
restTemplate.postForLocation(url, request);
Log.e("f", "finished");
return null;
Ошибка: dalvikvm-heap: Out of memory on a 67102090-byte allocation.
http://stackoverflow.com/questions/9630430/upload-large-file-in-android-with-outofmemory-error – KOTIOS
@ Stacks28 Можно ли использовать Spring вместо HTTPURLConnection? –
i hvnt работал с весенним приятелем, поэтому не мог предложить вам – KOTIOS