2017-06-28 3 views
0

Ich habe ein Servlet, das Dateien auf den angeforderten Client herunterlädt. Jetzt, wenn der Benutzer eine XML-Datei herunterladen möchte. Es beginnt mit dem Herunterladen und wenn es fertig ist, sieht die Datei unvollständig aus. Es fehlen einige Daten am Ende der Datei.Download-Datei mit Tomcat-Servlet heruntergeladen wird unvollständig

Mein Code sieht so aus:

File file = new File(location); 
response.setContentType("application/octet-stream"); 
response.setHeader("Content-Disposition","attachment;filename=" + fileName); 

FileInputStream fileIn = new FileInputStream(file); 
OutputStream out = response.getOutputStream(); 

byte[] outputByte = new byte[4096]; 
int length = -1; 

//copy binary contect to output stream 
while((length = fileIn.read(outputByte)) > 0) 
{ 
    out.write(outputByte); 
} 

fileIn.close(); 
out.flush(); 
out.close(); 

Wo ist mein Code die vollständige XML-Datei zum Herunterladen versagt?

Antwort

1

Ändern Sie Ihre While-Schleife wie folgt. Die Puffergröße beträgt 4096. Sie sollten nur die Länge verwenden, die im vorherigen read() gelesen wurde.

//copy binary contect to output stream 
    while((length = fileIn.read(outputByte)) > 0) 
    { 
    fileOut.write(outputByte, 0, length); 
    } 

Allerdings sollten Sie dies mit Guava ByteStreams für die Verwendung sein. Sie können auch andere Bibliotheken finden, die dies unterstützen.

Verwandte Themen