problema transfert file da SD

Ben ritrovati,
ho la necessità di implementare in uno sketch il download di un file che risiede sulla SD nell’arduino (UNO)

con l’aiuto di messaggi nel forum e della rete ho raggiunto il risultato di uno sketch basilare per farlo.
il problema è che il file (htm o txt indifferente) viene scaricato in codifica ascii.
nel file di prova inserito nella SD il testo è 1,1,1,1,1,1 risultato 4944494449444944494449
allego lo schetch:

#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 5, 171);
EthernetServer server(80);
File htmlFile;
 
void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
  if (!SD.begin(4)) { return; }
}
 
void loop()
{
 EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          
          client.println("HTTP/1.1 200 OK"); 
          //client.println("Content-Type: text/html");  
          client.println("Content-Type: application/octet-stream");
          client.println("Content-Description: File Transfer");
          client.println("Content-Disposition: attachment; filename=dati.htm");
          client.println("Content-Transfer-Encoding: binary");
          client.println("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
          client.println("Connection: close");
          client.println();
          
          htmlFile = SD.open("dati.htm");
          if (htmlFile) {
            while (htmlFile.available()) {
                client.print(htmlFile.read());
            }
            // close the file:
            htmlFile.close();
          }
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
}

la domanda è ovvia, sperando che anche la risposta sia banale…
esiste la possibilità di scaricare l’originale così com’è?
grazie mille

Prova client.Write invece di client.print

Certamente.
Tu quando fai:

client.print(htmlFile.read());

leggi un BYTE con la read, ma quando ne fai la print() lui te lo mostra come valore decimale, quindi 49 al posto di 1.

Devi semplicemente usare la write(), che scrive un byte, al posto del print():

client.write(htmlFile.read());

funziona, grazie mille, buona giornata...