2015-08-11 16 views
5

Ho bisogno di inviare un file di grandi dimensioni da Tablet Android a un server.Come posso inviare file di grandi dimensioni al server da Android con AndroidAnnotation?

Quindi ora sto usando Android Annotation per farlo, ma ora ho OutOfMemoryException perché il mio file è più grande di 35 MB. Ho cercato e ho notato che se uso FileOutputStream con la connessione posso evitare quella eccezione.

Ma come posso ottenere l'output in streaming dalla mia connessione usando @Rest AndroidAnnotation Class?

Questo è il mio codice:

@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); 
} 

E nel mio @EService:

@RestService DbRestClient dbRestClient; 

... 

dbRestClient.postDb(file) 

avete qualche idea?

+0

Perché si invia il file 35MB al server? potresti spiegare lo scenario. Che tipo di file di grandi dimensioni? – IshRoid

+0

@IshArt È un file .db, voglio trasferirlo per il backup sul server. – PaolaG

+0

Se si tratta di file di dati, quindi caricarlo per query, una o cinque righe contemporaneamente o, in caso contrario, aumentare il tempo di connessione ,, – IshRoid

risposta

0

Utilizzare @Part e FormHttpMessageConverter.

Il comunemente usato MappingJackson2HttpMessageConverter carica l'intero file in memoria, mentre convoca il file su JSON. Usando FormHttpMessageConverter lo streaming del contenuto del file invece di caricarlo in memoria.