• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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=" а потом уже мои данные.
И как кодировать стрим на лету тоже не понятно?
 
Сверху Снизу