HTTP File Upload mit Prozessbar Funktioniert nicht.

Matteo

Mitglied
Hallo,
ich versuche jetzt schon seit längerer Zeit eine Möglichkeit zu finden, Dateien zu einen Server zu senden und eine Rückgabe bekommen, wie weit er ist.
Bis jetzt habe ich folgenden code: http://pastebin.com/WUDQRJA5

Nur er fängt erst mit dem Upload auf Zeile 54. an. (Ich hab es mit dem Debugger überprüft. Bis Zeile ~50 wurde kein Byte gesendet und ab Zeile 54 auf einmal durchgehen mit maximalen upload).

Gibt es also eine Möglichkeit, die Outputstream am Server zu senden, während er noch in der while ist?:rtfm:
 

oversoul

Aktives Mitglied
Ja gibt es kann leider aber gerade keinen Code senden

Das Problem liegt bei URLConnection. Im HTTP-Header muss eigentlich die Länge der Daten stehen (Content-Length) da dieser nicht angegeben wird wartet URLConnection bis alle Daten da sind und sendet dann erst die Dateien zum Server und errechnet sich selbst die Content-Length.

Berechnet man den Wert selber und setzt diesen im Request-Header sendet die URLConnection die Daten bei jedem flush.

Übrigens hat die von dir verlinkte Methode(?) einen Fehler, wenn man mal größere Dateien schickt. Da Java bei URLConnection standart mäßig die Daten von deinen Streams im RAM puffert. (Man siehst es dann bei Dateien über 200mb sehr gut [ Out of Memory Exception ] ).

Ich hoffe du kannst damit so was anfangen, sonst kann ich dir evtl heute Abend noch helfen
 

Matteo

Mitglied
Wow! Vielen dank.
Zu der Größe habe ich noch eine Frage. Wie berechne ich am besten die größe. Ich sende eine Datei mit ein paar Parameter (ebenfalls per Post).
Oder spielt es ist für den Webserver keine rolle, wenn ein paar kb mehr/weniger übertragen werden. (Ich kenn mich mit Java und Internet nicht wahnsinnig gut aus).

Meinst du mit der Methode, dass ganze?
Ja, es ist ein ausschnitt der Methode. Wie kann ich den OutOfMemory Fehler verhindern?
 
Zuletzt bearbeitet:

oversoul

Aktives Mitglied
Eine falsche Methode ist nicht drin.

Es müste mindestens einmal " urlConnection.setRequestProperty("Content-Length",SIZE); " rein.

Die Content-Length berechnet sich aus der Kompletten länge aller Zeichen NACH dem Header, also Dateilänge alle \r\n und boundary. Bedenke, dass das erste \r\n zum Header gehört
 
Zuletzt bearbeitet:

oversoul

Aktives Mitglied
Hab mich versehen ^^

Berechnen must du die Daten nach dem Header, die Header länge selbst ist unwichtig.

Sry nochmal für den falschen strich ^^ hab mich nur verklickt
so und jetzt bin ich weg bis spät am Abend
 

Matteo

Mitglied
So, es geht noch immer nicht. Ich schick dir mal den ganzen code von der Methode, den ich habe:
[Java] String boundary = Long.toHexString(System.currentTimeMillis()); // Just generate - Pastebin.com

Außerdem gibt es folgende Instancvaribalen:
Java:
private HashMap<String, Object> postRequest = new HashMap<String, Object>();
private URLConnection urlConnection;

HashMap kann zwar jeden key haben, doch es gibt nur 2 Methoden (außer die zum senden), die darauf zu greifen:
addPostRequest(String key, String value)
addPostRequest(String key, File value)

Also kann die HashMap als Key nur einen String oder eine File haben.
 

oversoul

Aktives Mitglied
Ich habe mal in meinen alten Quellcode geguckt und habe festgestellt, dass ich damals meine Daten per PUT hochgeladen habe. Über Post funktioniert das leider nicht so.

Ich würde daher empfehlen das ganze "einfach" mit einem Socket so machen, da hast du die beste Möglichkeit die gesendeten Bytes zu zählen, so hatte ich das auch mal mit C# gemacht.


OFF:
Sry dass ich mich erst jetzt wieder Melde aber ich bin leider diese Woche mit Arbeit überladen.
 

Matteo

Mitglied
Ich habe mal in meinen alten Quellcode geguckt und habe festgestellt, dass ich damals meine Daten per PUT hochgeladen habe. Über Post funktioniert das leider nicht so.

Ich würde daher empfehlen das ganze "einfach" mit einem Socket so machen, da hast du die beste Möglichkeit die gesendeten Bytes zu zählen, so hatte ich das auch mal mit C# gemacht.


OFF:
Sry dass ich mich erst jetzt wieder Melde aber ich bin leider diese Woche mit Arbeit überladen.

Kein Problem. Ich habe jetzt einfach so eine Drehscheibe gemacht und werde die Prozessbar in der nächsten Version einbauen.
Die Dateien per PUT hochladen geht, leider nicht, da die API nur POST und GET Anfragen akzeptiert.

PS: Danke für den Tipp in C#, ich werde es heute Nachmittag mal ausprobieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D CSV File Upload Netzwerkprogrammierung 5
5 File Upload/ ClassNotFoundException Netzwerkprogrammierung 9
R HTTP HttpURLConnection Large File Upload Netzwerkprogrammierung 1
E upload progress bei einem http file post Netzwerkprogrammierung 5
L file upload / download über http Netzwerkprogrammierung 5
J File upload mit ftp Netzwerkprogrammierung 4
D Socket Gute Idee?: File als byte[] per ObjectIOStream übertragen Netzwerkprogrammierung 3
S Webserver für Jar File Netzwerkprogrammierung 4
H Applet soll XML-File auf Server speichern Netzwerkprogrammierung 6
R Apache HttpClient File Download? Netzwerkprogrammierung 3
0 Apache Commons File Object bekommen Netzwerkprogrammierung 4
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
S RSS-Feed aus ini File Netzwerkprogrammierung 4
Z File über Socket lesen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
F Protokoll file:/// Netzwerkprogrammierung 2
B JNLP File -> Web Application Netzwerkprogrammierung 10
DStrohma RMI Security Manager & Policy-File Netzwerkprogrammierung 8
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
P java file.exists() zuzerstörbar Netzwerkprogrammierung 7
E java.net.SocketException: Unexpected end of file from server Netzwerkprogrammierung 2
G SMB-File ausführen Netzwerkprogrammierung 15
J Problem beim Senden von File Netzwerkprogrammierung 4
J Mit der File Api Dateien von anderen Rechnern lesen ? Netzwerkprogrammierung 3
I unc pfad für die klasse file? Netzwerkprogrammierung 4
V file transfer problem Netzwerkprogrammierung 2
P File von http-Server kopieren Netzwerkprogrammierung 5
N File Transfer Netzwerkprogrammierung 5
D wie kann ich rmic ein .jar file übergeben? Netzwerkprogrammierung 3
R File chooser übers Netzwerk Netzwerkprogrammierung 3
G file download über https mit p12 Zertifikat Netzwerkprogrammierung 4
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
T file auf einen server laden Netzwerkprogrammierung 4
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
P nanoHttp upload.html page lädt nicht Netzwerkprogrammierung 4
B FTPS Upload Netzwerkprogrammierung 3
M Google Image Upload Netzwerkprogrammierung 12
M Apache Solr doc & pdf Upload Netzwerkprogrammierung 8
C apache commons net ftp bei upload unvollständig Netzwerkprogrammierung 3
C HTTP Mediawiki Upload Netzwerkprogrammierung 9
D FTP Pfadangabe für ftp-upload funktioniert nicht Netzwerkprogrammierung 5
1 Upload problem! org.apache.commons.net.ftp Netzwerkprogrammierung 3
E Applet zum Datei-Upload Netzwerkprogrammierung 3
P Bilder: FTP-Upload funktioniert nicht richtig Netzwerkprogrammierung 2
W HTTP-Upload Netzwerkprogrammierung 2
K Datei-Upload per FTP Netzwerkprogrammierung 2
E Upload großer Dateien? Netzwerkprogrammierung 5
eskimo328 progress bar mit upload speed Netzwerkprogrammierung 19
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben