So, jetzt noch eine etwas schwere Frage …
Die folgende Funktion wird in einer Upload-Klasse benutzt.
Diese Upload Klasse setzt per POST (an ein php Script) Daten ab.
Der User soll beim Upload (gewöhnlich Files mit der Größe von 2 bis 2,7 MB) anhand eines netten Ladebalkens sehen, wie lange es noch dauert.
Die Funktion errechnet, wieviel Prozente gemacht wurden und soll es später dann anzeigen.
Leider geht der Upload “viel zu schnell” - das Ding hat schon 100 % innerhalb weniger Sekunden (obwohl 2,6 MB) und die Verbindung ist dennoch aktiv!
Der Code:
byte[] buf = new byte[5000];
int nread;
int navailable;
int total = 0; //Menge an Bytes bisher gesendet
int percentage = 0; //Percent done...
int oldpercent = 0;
synchronized (in) {
while((nread = in.read(buf, 0, buf.length)) >= 0) {
//Transfer
out.flush();
out.write(buf, 0, nread);
out.flush();
total += nread; //Wieviel bereits gesendet?
percentage = (int)( ( total * 100.0 ) / filesize );
//System.out.println("STAT_ sent: "+total+" total: "+filesize);
if(oldpercent < percentage){
System.out.println("%: " + percentage);
//listener.setProgressStatus(percentage);
}
oldpercent = percentage;
}
}
buf = null;
}```
Du kannst davon ausgehen, dass die Variablen alle stimmen! (getestet)
Nur geht es viel zu schnell.
Der OutputStream schluckt anscheinend die Bytes alle irgendwo. :(
An diesem Problem sitze ich schon seit Wochen! :(
MfG
Inno