如何使用AndroidAnnotation从Android发送大型文件到服务器?

时间:2015-08-11 11:56:01

标签: java android rest android-annotations

我需要从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)

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用@PartFormHttpMessageConverter

常用的MappingJackson2HttpMessageConverter将整个文件加载到内存中,同时将文件传递给JSON。使用FormHttpMessageConverter它将流式传输文件内容,而不是将其加载到内存中。