setContentLength > 4gb

Empire Phoenix

Top Contributor
Ich habe ein Servlets worüber downloads laufen.
Jetzt setzte ich setContentLength() im response, damit ich auf dem clients eine vernünftige Fortschrittsanzeige hab.
Jetzt nimmt das aber lediglich einen int als Argument, während File.length() ein long sein kann.
Somit ist die frage wie kann ich das vernünftig Lösen für Dateien über 4 gb?
 

Poltergeist

Mitglied
MegaByte
du sollst garnicht setzen, wenn du nicht 100% die laenge kennst. Warum? Servlet container wird fuer dich tun und es wird entsprechend die daten als Chunked data senden und das keyword Tranfer-Encoding: chunked setzen. Ausserdem, wenn du so riesig setzst, dein servlet "hogs" die uebertragung und "slowdowns" dein program. Fuer deine Information: Du kannst einen ChunkedInputStream als eine Extension von InputStream implementieren. Der format ist:
nnnn\r\ndata\r\n.....nnnn\r\ndata\r\n.....
wobei:
nnnn: in hex (max 7FFF), die laenge der folgenden daten
Data: die daten
 

Empire Phoenix

Top Contributor
Naja ich kenne 100% die länge, da es sich schlicht im ein File handelt das ich rausschreibe.
Die Frage ist jetzt halt ob es eine Möglichkeit gibt derartig dateien it > 4gb also ausserhalb des Integer bereiches zu senden, so dass Browser einen Fortschritsbalken haben, oder ob ich die irgetwie künstlich in parts aufteilen muss, bzw darauf verzichten muss.
 
B

Beni

Gast
Bei der
Code:
HttpServletResponse
gibt es auch eine Methode
Code:
setHeader
. Damit sollte es möglich sein, "content-length" einen beliebigen String zuzuweisen.
 

Neue Themen


Oben