• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужен пример для file upload на сервер с ESP клиента

mischaka

New member
Подскажите пожалуйсто пример скетча для ардуионо,
как сделать file upload с ESP8266 который подключается как клиент к Серверу в интернете.
тоесть фаил находится на ESP8266 и должен попасть к php скрипту?
 

Юрий Ботов

Moderator
Команда форума
Ответов нет видимо потому, что вопрос не понятен: для чего должен быть скетч, для Arduino или для 8266 под ArduinoIDE, в каком смысле файл находится в 8266: в SPIFFS, просто в флэше или генерится, какого размера файл, текстовый или бинарный, какой протокол и т.п. Если на пальцах, то надо просто превратить файл (или его первый кусок) в некий массив, преобразовать этот массив например в base64 создать запрос (если HTTP то GET или POST тело которого заканчивается на URL\handler.php?X=всеилипервыйкусоквbase64;)... как-то так.
 

mischaka

New member
Уточняю,
скетч для 8266 под ArduinoIDE файл находится в 8266: в SPIFFS в флэше, файл, бинарный.
Посылаем через HTTP POST. В интернете дофига информации о том как принять фаил в PHP. А вот как послтъ точно не знаю . base64 это идея, это Вы меня в правильном направлении подтолкнули.
Размер фаила скажем 2Кб.
Надо его резать или сразу целиком? Вроде длинна POST не ограничена?
 

AFCrio

New member
Так почитайте передачу через multipart/form-data, там все несложно.
multipart/form-data — Википедия
Генерация HTTP запросов
В простейшем случае так:
Код:
POST /me.php HTTP/1.1
Host: example.com
User-Agent: ESP8266
Content-Type: multipart/form-data; boundary=РАЗДЕЛИТЕЛЬ
Content-Length: (суммарный объём, включая дочерние заголовки)
Connection: keep-alive
Keep-Alive: 300
(пустая строка)
--РАЗДЕЛИТЕЛЬ
Content-Disposition: form-data; name="AttachedFile1"; filename="myfile.bin"
Content-Type: application/octet-stream
(пустая строка)
(двоичное содержимое файла)
--РАЗДЕЛИТЕЛЬ--
Набор символов используемый как "РАЗДЕЛИТЕЛЬ" не должен встречаться в файле.
 

mischaka

New member
File DataFile = SPIFFS.open("/Daten.txt", "r");
int grosse= DataFile.size();
String url = "http://esp8266.de/Test/Daten1.php";
http.begin(url); //HTTP
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.sendRequest("POST", &DataFile, grosse);
DataFile.close();
Вот так работает единственное что приходится в начале фаила писать "file=" а потом уже мои данные.
И как кодировать стрим на лету тоже не понятно?
 
Сверху Снизу