【问题标题】:How can I send large File to Server from Android with AndroidAnnotation?如何使用 AndroidAnnotation 从 Android 向服务器发送大文件?
【发布时间】:2015-11-03 15:23:11
【问题描述】:

我需要将一个大文件从 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)

你有什么想法吗?

【问题讨论】:

  • 为什么要向服务器发送 35MB 的文件?你能解释一下场景吗?什么样的大文件?
  • @IshArt 这是一个.db文件,我想转移到服务器上备份。
  • 如果是databae文件则查询上传,一次一到五行,否则增加连接时间,
  • @IshArt 我不想在另一个数据库中复制该行。是一个本地数据库,用于备份(用户在机器下破坏了平板电脑)我想每天在我的服务器上传输。

标签: java android rest android-annotations


【解决方案1】:

使用@PartFormHttpMessageConverter

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多