2011-10-31 4 views
0

Je rencontre quelques problèmes pour écrire un serveur web de base en JAVA. Il fonctionne actuellement très bien pour fournir des fichiers html ou css. Mais quand il s'agit d'images, les choses sont gâchées. Je suppose que je fais quelque chose de mal à lire les fichiers image et les préparer à être envoyés. Mais un coup d'oeil sur le code:Comment créer une réponse HTTP envoyant une image en JAVA?

public void launch() 
{ 
    while(true) 
    { 
     try 
     { 
      Socket connection = this.server_socket.accept(); 

      ... 

      PrintWriter print_writer = new PrintWriter(connection.getOutputStream()); 

      String response = this.readFile(this.request_header.get("Resource")); 
      print_writer.print(response); 

      print_writer.flush(); 
      connection.close(); 
     } 
     catch(...) 
     { 
      ... 
     } 
    } 
} 

private String readFile(String path) 
{ 
    try 
    { 
     ... 

     FileInputStream file_input_stream = new FileInputStream(path);   
     int bytes = file_input_stream.available(); 
     byte[] response_body = new byte[bytes]; 

     file_input_stream.read(response_body); 
     this.response_body = new String(response_body); 

     file_input_stream.close(); 

     this.setResponseHeader(200, file_ext); 

     this.response_header = this.response_header + "\r\n\r\n" + this.response_body; 
    } 
    catch(...) 
    { 
     ... 
    } 

    return this.response_header; 
} 

Donc, mon navigateur reçoit quelque chose comme:

HTTP/1.0 200 OK 
Content-type: image/jpeg 

[String that was read in readFile()] 

Mais Chrome ne pas afficher correctement l'image et l'opéra ne montrera pas tout! J'avais l'habitude de lire le dossier avec un BufferedReader mais j'ai trouvé quelqu'un en disant que le BufferedReader ne peut pas manipuler correctement des données binaires ainsi j'ai essayé avec FileInputStream, mais le problème est resté le même):

Merci pour tous les conseils et aide dans avancer (:

Répondre

2

Vous devez utiliser les flux des deux côtés:.. flux d'entrée et flux de sortie les lecteurs et les auteurs supposent que le contenu est Unicode et d'ajuster le flux d'octets PrintWriter est, bien sûr, un écrivain

.
Questions connexes