Webserver and html file

PaulS:
There are several problems with that snippet you posted. First, it's impossible to guess what types a number of the instances are. Seeing the whole code, including the #include statements is neccessary.

sorry for few information I posted, I'm going to post the whole sketch:

declaration

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
#include "aJSON.h"
#include "SD.h"
#define NAMELEN 32
#define VALUELEN 32

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 210 };
int inByte;
char c;

WebServer webServer("", 80);
void readFile(char* nomeFile, WebServer &server)
{
  if (SD.exists(nomeFile))
  {
    File file;
    
    file = SD.open(nomeFile);
    if (file)  {
      while ((c = file.read()) > 0)
      {
        //server.write(file.read());
        server.print((char)c);
      }
      file.close();
    }
  }else{
    Serial.println("il file non esiste");
  }
}
void helloCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
  server.httpSuccess();
  if (type == WebServer::HEAD)
    return;
    readFile("prova.htm", server);
    //server.print("vediamo se lo scrive");
}
void loop()
{
  char buff[64];
  int len = 64;
  webServer.processConnection(buff, &len);
}
void setup() 
{
  Ethernet.begin(mac, ip);
  webServer.setDefaultCommand(&helloCmd);
  webServer.addCommand("jsonStatus", &sendJsonString);
  webServer.begin();
  SD.begin(4);
  Serial.begin(9600);
}

PaulS:
Second, sending one character at a time in a packet to the client is really not a good idea. Read and buffer a number of characters, and send the whole buffer in one packet.

I realize now that my sketch is sending one packet per byte, how can I buffer a number of chars without full the ram?

PaulS:
Third: "it doesn't work" gives us nothing to go on. You are reading data from the file, presumably, though you don't echo to the serial port to confirm that. You don't say what happens on the client end. It's hard to fix issues when we don't know what the problem is.

I tryed to explain what happen but the behaviour is strange and not constant: after downloading, the first page request is slow but it is a success, after some request arduino answer with a part of the page and we reach last point where arduino does not answer anymore.

PeterH:
Simply echoing to the serial monitor each byte read from the file would enable you to get a much better understanding of what your sketch is doing.

The serial monitor print correctly the content of the file, even when a part of the webpage is loaded.