我需要从Android平板电脑向服务器发送一个大文件。
现在我正在使用Android Annotation
来执行此操作,但现在我得到OutOfMemory
Exception
因为我的文件大于35MB。我搜索了一下,并且我不明白,如果我使用FileOutputStream
连接,我可以避免这种异常。
但是如何使用@Rest AndroidAnnotation Class
从我的连接中获取输出流?
这是我的代码:
@Rest(converters = {FormHttpMessageConverter.class, MappingJackson2HttpMessageConverter.class}
/*, interceptors=MyClientHttpRequestInterceptor.class*/)
public interface DbRestClient extends RestClientErrorHandling{
void setRootUrl(String rootUrl);
String getRootUrl();
void setRestTemplate(RestTemplate restTemplate);
RestTemplate getRestTemplate();
@Post("dbSynk/postNew")
Integer postDb(MultiValueMap file);
}
进入我的@EService
:
@RestService DbRestClient dbRestClient;
...
dbRestClient.postDb(file)
你有什么想法吗?
答案 0 :(得分:0)
使用@Part
和FormHttpMessageConverter
。
常用的MappingJackson2HttpMessageConverter
将整个文件加载到内存中,同时将文件传递给JSON。使用FormHttpMessageConverter
它将流式传输文件内容,而不是将其加载到内存中。