Possiedo un'applicazione client desktop Java che carica i file su un servizio REST.Barra di avanzamento caricamento file utilizzando RestTemplate.postForLocation
Tutte le chiamate al servizio REST vengono gestite utilizzando la classe Spring RestTemplate.
Sto cercando di implementare una barra di avanzamento e annullare la funzionalità in quanto i file caricati possono essere abbastanza grandi.
Ho cercato un modo per implementarlo sul web ma non ho avuto fortuna.
Ho provato a implementare il mio ResourceHttpMessageConverter e a sostituire il metodo writeInternal(), ma questo metodo sembra essere chiamato durante un'operazione di buffering prima di postare effettivamente la richiesta (quindi il flusso viene letto tutto in una volta prima che l'invio abbia luogo)).
Ho anche provato a sovrascrivere il metodo CommonsClientHttpRequestFactory.createRequest() e ad implementare la mia propria classe RequestEntity con un metodo writeRequest() speciale ma si verifica lo stesso problema (lo stream viene letto prima di inviare effettivamente il post).
Sto cercando nel posto sbagliato? Qualcuno ha fatto qualcosa di simile.
Un sacco di cose che ho letto sul web sull'implementazione delle barre di avanzamento parla di come iniziare il caricamento e quindi di utilizzare richieste AJAX separate per eseguire il polling del server Web per un progresso che sembra un modo strano per farlo.
Qualsiasi aiuto o consiglio molto apprezzato.
questo potrebbe avere quello che stai cercando per http://stackoverflow.com/questions/5294532/httpclient-upload-big-file-and-show-send-bytes-number – ams
Grazie per il collegamento. Sfortunatamente l'esempio fornito utilizza le librerie di apache di basso livello, quindi non sono chiaro quale sia la classe FileBody equivalente nelle librerie Spring Rest, o come potrei iniettare la mia implementazione da utilizzare. – glidester