Hallo,
ich habe mir einen kleinen WebServer gebastelt und schaffe es derzeit html Dateien an den Browser zu schicken. Etwa so:
Jetzt möchte ich jedoch auch ein mp3-Datei an den Browser schicken. Der Browser soll dann das "Speichern untern" Fenster öffnen. Leider klappt das nicht, die Datei wird im Browser angezeigt und nicht zum Speichern angeboten. Jemand eine Idee was ich falsch mache?
ich habe mir einen kleinen WebServer gebastelt und schaffe es derzeit html Dateien an den Browser zu schicken. Etwa so:
Code:
fis = new FileInputStream( fileName );
statusLine = "HTTP/1.0 200 OK" + CRLF ;
contentTypeLine = "Content-type: " + contentType( fileName ) + CRLF ;
contentLengthLine = "Content-Length: " + (new Integer(fis.available())).toString() + CRLF;
// Send the status line.
output.write(statusLine.getBytes());
// Send the server line.
output.write(serverLine.getBytes());
// Send the content type line.
output.write(contentTypeLine.getBytes());
// Send the Content-Length
output.write(contentLengthLine.getBytes());
// Send a blank line to indicate the end of the header lines.
output.write(CRLF.getBytes());
if (sendFile){
sendBytes(fis, output) ;
}else{
output.write(entityBody.getBytes());
}
if (fis != null){
fis.close();
}
Code:
private static void sendBytes(FileInputStream fis, OutputStream os) throws Exception{
// Construct a 1K buffer to hold bytes on their way to the socket.
byte[] buffer = new byte[1024] ;
int bytes = 0 ;
// Copy requested file into the socket's output stream.
while ((bytes = fis.read(buffer)) != -1 ) {
os.write(buffer, 0, bytes);
}
}
Code:
private static String contentType(String fileName){
if (fileName.endsWith(".htm") || fileName.endsWith(".html")){
return "text/html";
}else if (fileName.endsWith(".mp3")){
return "audio/mpeg";
}
return "";
}
Jetzt möchte ich jedoch auch ein mp3-Datei an den Browser schicken. Der Browser soll dann das "Speichern untern" Fenster öffnen. Leider klappt das nicht, die Datei wird im Browser angezeigt und nicht zum Speichern angeboten. Jemand eine Idee was ich falsch mache?