Ich suche eine Möglichkeit den Progress eines File-Post-Uploads zu ermitteln. Finde aber irgendwie nichts in der Richtung... Wäre für jegliche Tipps dankbar!
Upload Progress ermitteln (Jakarta HTTPClient)
-
-
Moin Benny,
nach was googlest du denn.. erster Treffer: [google]Jakarta http progress upload[/google]
java-forum.org/de/viewtopic.php?t=52607
Da ich einen MultiPart-Post anstrebe (weil ich mehrere Files zugleich uploaden will), habe ich die Methode sendData(OutputStream) der Klasse org.apache.commons.httpclient.methods.multipart.FilePart um die Benachrichtigung eines ProgressListeners erweitert:
P.S.: Der ProgressListener ist ein frei erfundenes Interface, das bei der Instantiierung meiner FilePart-Klasse mitgegeben wird.
Quellcode
- protected void sendData(OutputStream out) throws IOException {
- [...]
- byte[] tmp = new byte[4096];
- InputStream instream = getSource().createInputStream();
- try
- {
- int len;
- while ((len = instream.read(tmp)) >= 0)
- {
- out.write(tmp, 0, len);
- if (progressListener != null)
- progressListener.bytesWritten((double)len / 1000.00); // weil meine Implementierung des Listeners in KB arbeitet
- }
- }
- finally
- {
- // we're done with the stream, close it
- instream.close();
- }
- }
-
Also mir würde in BennyBunnys Situation der Codeausschnitt nicht weiterhelfen.
Ich denke das Problem liegt darin, die Größe der Daten des Streams zu ermitteln. Das Zählen der verarbeiteten Daten und das Berechnen des Fortschritts ist eigentlich Pillepalle.
Also zurück zur Streamgröße. Ich würde mal behaupten ein Stream hat keine begrenzte Größe. Er kann damit potentiell unendlich sein. Damit lässt sich der Fortschritt mit dem Stream nicht berechnen. Nun würde ich 2 Alternativen vorschlagen. Wenn es immer um Dateien geht, dann versuche mal die Größe über die Klasse java.io.File und die Methode length() zu ermitteln. Ansonsten kannst du auch den Stream komplett in den Speicher laden und dabei die Gesammtgröße ermitteln. Das ist allerdings nur bei kleineren Datenmengen zu empfehlen.
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0
-
Tags
- PHP
- de
- http:
- AJAX
- HTML
- http
- www
- org
- Delphi
- größe
- Java
- file
- easy-coding
- post
- methode
- download
- länge
- Datei
- ermitteln
- Upload
- deutsche
- klasse
- Hilfe
- Apache
- senden
- alternativ
- g
- android
- common
- send
- stream
- commons
- Streams
- outputstream
- inputstream
- fortschritt
- oracle
- listener
- multipart
- progress
- uploadprogress
- jakarta
- filepart
- httpclient
- datenmenge
- stream->Write
- inputstreams
- upload progress\
- bytes=\
- Progresslistener
- upload-progress-ermitteln-jaka
- instantiierung
- FTPClient