как передать csv-файл при обращении к серверу

igorlab
Offline
Зарегистрирован: 11.11.2015

Доброго времени суток. 

вопрос - есть сервер на ESP32 

#include <WiFi.h>
#include <WiFiClientSecure.h>
WiFiServer wifi_server(80);
WiFiClientSecure client;

в сетапе

...
server.on("/LogV.csv",    sendDataFile);
server.begin();

датчики измеряют температуру и записывают в файл LogV.csv

File datafile = SPIFFS.open("/" + DataFile, FILE_APPEND);
        if (datafile == true) { // if the file is available, write to it
          datafile.println( GetTime() + char(44) + String(temp_water / 100.0));
        }
        else LOG_output ( 0, "cant read the file");
        datafile.close();

- при подключении к серверу отправляется html страничка которая рисует график по данным из файла LogV.csv:

<div class="div-temperature" id="graphdiv3"></div>
    <script type="text/javascript">
        g3 = new Dygraph(document.getElementById("graphdiv3"),
            "LogV.csv",
            {
                rollPeriod: 7,
                showRoller: true
            }
        );
    </script>

так вот как передать этот файл вместе с html страничкой?

Сейчас для тестирования делаю таким образом 

void sendDataFile() {
  webpage = "";
  webpage += "Date,Temp\n";

  File datafile = SPIFFS.open("/" + DataFile, FILE_READ);
  if (datafile == true) { // if the file is available, write to it
    while (datafile.available()) {
      //Lets read line by line from the file
      String line = datafile.readStringUntil('n');
      LOG_output ( 0, "writed into  file " + line);
      webpage += line + "\n";
    }
    LOG_output ( 0, "110 writed into file" + GetTime() + char(44) + String(temp_water / 100.0));
  }
  else LOG_output ( 0, "cant read the file");
  datafile.close();

  server.send(200, "text/plain", webpage);
}
все работает - но не хочется перебирать  файл в текстовую переменную webpage и отправлять ее, может есть способ отправить файл напрямую?
igorlab
Offline
Зарегистрирован: 11.11.2015
String webpage = ""; // поправка
negavoid
Offline
Зарегистрирован: 09.07.2016

Всё правильно делаете, sendfile() из spiffs в есп32, насколько знаю, нет.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Чего то в esp может и нет, но все можно реализовать тупо ручной отправкой побайтно.

ЗЫ. Сам не пробовал, но уверен что все реально - читаем html http протоколы.