как передать csv-файл при обращении к серверу
- Войдите на сайт для отправки комментариев
Ср, 12/06/2019 - 02:08
Доброго времени суток.
вопрос - есть сервер на 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 и отправлять ее, может есть способ отправить файл напрямую?
Всё правильно делаете, sendfile() из spiffs в есп32, насколько знаю, нет.
Чего то в esp может и нет, но все можно реализовать тупо ручной отправкой побайтно.
ЗЫ. Сам не пробовал, но уверен что все реально - читаем html http протоколы.