read SD card on website with webduino

Hi ,
I need to read SD card on website , i get the exemple "printDirectory" from Arduino and i replace 'Serial' by 'webserver' like that :

void printDirectory(WebServer &server, File dir, int numTabs) { // la fonctin reçoit le rép et le décalage tab
   while(true) { // tant que vrai = crée une "loop" qui séxécute tant que contenu
   // la sortie se fait par break;
     File entry =  dir.openNextFile(); // ouvre le fichier ou repertoire suivant
     if (! entry) { // si aucun nouveau fichier /repertoire
       //Serial.println("** pas d'autre fichier ou repertoires**");
       break; // sort de la fonction 
     } // fin si aucun nouveau fichier / répertoire
     // affiche le nombre de tab voulu - 0 si racine, 1 si sous Rép, 2 si sous-sous rép, etc..
     for (int i=0; i<numTabs; i++) {
       server.print('\t');
     }
     Serial.print(entry.name()); // affiche le nom du fichier/repertoire
     Serial.println();
     if (entry.isDirectory()) { // si le fichier est un répertoire
       server.println("/"); // affiche un slash
       printDirectory(server,entry, numTabs+1); // affiche le contenu en décalant d'un tab
     } // fin si le fichier est un répertoire
     else { // sinon affiche la taille - les fichiers ont une taille, pas les répertoires 
       // files have sizes, directories do not
       server.print("\t\t"); // affiche de Tab de décalé
       server.print(entry.size(), DEC); // affiche la taille
       server.println(" octets"); // affiche la taille
     } // fin sinon = si pas un rép
   } // fin while(true)
} // fin fonction

And i print like that :

void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
  
  if (type == WebServer::POST)
  {
    // ignore POST data
    server.httpFail();
    return;
  }

  /* for a GET or HEAD, send the standard "it's all OK headers" */
  server.httpSuccess();
  /* we don't output the body for a HEAD request */
  if (type == WebServer::GET)
  {
    /* store the HTML in program memory using the P macro */
    P(message1) = 
      "<html><head><title >Simulateur </title></head>"
      "<body style=\"text-align:left;\">"     
      "<div style=\"font-size:200%;font-weight:bold; border: 2px black solid;\">";
    P(message2) =    
      "<span style=\"text-indent:50%;margin-left:150px;margin-top:25px; \">Simulation thermique</span></div>"
      "<center><h2>Historique des campagnes<h2></center>"
      "<center><aside style=\"width : 20%; height: 80%;border:2px black solid;\">";
    P(message3) =
      "</aside></center>"
      "</body></html>";
    
    server.printP(message1);
    loadImage(server, "toto.jpg");
    server.printP(message2);
    printDirectory(webserver,myDir, 0); // affiche contenu d'un répertoire avec 0 tab
    server.printP(message3);  
    
  }
}
void setup()
{
  Serial.begin(115200);
  // setup the Ehternet library to talk to the Wiznet board
  Ethernet.begin(mac, serverIP , passerelle , masque );
  /* start the server to wait for connections */
  webserver.begin();
  Serial.println("Initialisation de la SD card...");
  pinMode(53, OUTPUT);
  if (!SD.begin(4)) {
    Serial.println("Erreur à l'init!");
    return;
  }
  else {
    Serial.println("Initialisation reussie !");
  }
  
  myDir = SD.open("/");// ouvre la carte SD a la racine
  /* register our default command (activated with the request of * http://x.x.x.x/ */
  webserver.setDefaultCommand(&defaultCmd);
  myDir.close();
  
}

And it's doesn't work .

I find the error , it's here :

File entry =  dir.openNextFile(); // open the next file or directory
     if (! entry) { // if no file/directory 
       Serial.println("** no other file/directory**");
       break; // sort de la fonction 
     } // end if

But i don't know how resolve it . Because when i start in "Serial" , it's works ....

Sorry for my english ^^' if you don't understand say it me thanks :slight_smile: .