JSP-download - application/octet-stream

Ich habe eine Seite in JSP-Liste-Datei, die heruntergeladen werden können durch einen Benutzer.
Thoses Dateien nicht auf dem lokalen server sind Sie auf einem remote-Datei-server.

Wenn der Benutzer klicken Sie zum herunterladen einer Datei, die webserver-Verbindung über TCP auf den file-server. Der web-server die Datei herunterladen und erstellen Sie eine HTTP-Antwort für den client.

Hier ist mein code:

<%@page language="java"%>
<%@page import="sun.misc.Request"%>
<%@page import="listing.ClientTCPStockage"%>
<%@page import="java.net.InetAddress"%>

<%
out.clearBuffer();

String nomFichier = request.getParameter("fichier");
String adresseStockage = request.getParameter("adresseStockage");

ClientTCPStockage clientStockage = new ClientTCPStockage(InetAddress.getByName(adresseStockage), 2004);
byte donneeFichier[] = clientStockage.getDonneesFichier(nomFichier);

response.setHeader("Content-Disposition", "attachment;filename=\"" + nomFichier + "\"");
response.setHeader("Content-Type", "application/octet-stream;");
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Content-Length", String.valueOf(donneeFichier.length));

for(int i = 0; i < donneeFichier.length; i++){
    out.write(donneeFichier[i]);
}
%>

Diese arbeitet völlig in Ordnung für text-basierte Datei, wie .csv oder normal .txt
aber Es funktioniert nicht für andere geben möchten .mp3 oder .jpeg.. die Dateien beschädigt.

Ich denke, es ist ein problem mit meine Codierung, aber ich kann nicht finden, wo..

Hier ist der HTTP-Header der Antwort:

HTTP/1.x 200 OK
Server: Apache-Coyote/1.1
Content-Disposition: attachment;filename="test.mp3"
Accept-Ranges: bytes
Content-Type: application/octet-stream;
Content-Length: 5387668
Date: Sun, 20 Dec 2009 18:52:18 GMT

Dank.

  • ClientTCPStockage die Verbindung zum Datei-server und greifen Sie die Datei als byteArray. An diesem Punkt der Inhalt ist gültig, weil, wenn ich versucht, um es wieder auf die Festplatte als Datei funktioniert es tadellos. Daten zu erhalten korrupten, wenn ich die Ausgabe als HTTP-response
  • Wahrscheinlich dup: siehe stackoverflow.com/questions/1776142/... für die Tücken des Schreibens auf eine OutputStream von JSP.
Schreibe einen Kommentar