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

5

我需要从Android平板电脑向服务器发送一个大文件。

现在我使用Android Annotation来完成这个任务,但是由于我的文件大小超过了35MB,所以我得到了OutOfMemory Exception。我搜索并了解到,如果我使用带有连接的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)

你有什么想法吗?


为什么你要向服务器发送35MB的文件?能否请你解释一下情况。这是什么类型的大文件? - IshRoid
@IshArt 这是一个.db文件,我想将其传输到服务器以备份。 - PaolaG
如果这是数据库文件,则通过查询一次上传一行或五行,或者如果不是,则增加连接时间。 - IshRoid
@IshArt 我不想将行复制到另一个数据库中。这是一个本地数据库,用于备份(用户在机器下方摔坏了平板电脑),我希望每天将其传输到我的服务器上。 - PaolaG
https://dev59.com/yWkw5IYBdhLWcg3wzdzZ - gipinani
1个回答

0

使用@PartFormHttpMessageConverter

常用的MappingJackson2HttpMessageConverter会将整个文件加载到内存中,同时将文件转换为JSON。使用FormHttpMessageConverter可以流式传输文件内容,而不是将其加载到内存中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接