а использовать sd карту не вариант ?
если не ошибаюсь там декодер нужен, из за того что файлы сокращаются… на мк не просмотреть просто файлы с компа… а с компа представление файла с мк (но это не точно)
#include <TJpg_Decoder.h> может пригодится… и вроде с JPEG и с JPG работает… чуть другим способом
https://github.com/Bodmer/JPEGDecoder я использовал эту библиотеку для вывода картинок на дисплей
есть еще файл переноса с телефона например файла на sd карту, на esp32(версия ядра есп <3) но по большей части там все на автомате делается, но может пригодится… и вроде сделать передачу на комп будет легко, особенно с ии…
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <SD.h>
#include <SPI.h>
const char* ssid = "ESP32-Access-Point"; // Имя точки доступа
const char* password = "123456789"; // Пароль точки доступа
AsyncWebServer server(80); // Создание асинхронного веб-сервера на порту 80
void setup() {
Serial.begin(115200); // Инициализация последовательного порта
// Инициализация точки доступа
WiFi.softAP(ssid, password);
Serial.println("Access Point started");
// Получение IP-адреса
IPAddress myIP = WiFi.softAPIP();
Serial.print("ESP32 AP IP address: ");
Serial.println(myIP); // Вывод IP-адреса в последовательный порт
// Инициализация SD-карты
if (!SD.begin()) {
Serial.println("Ошибка инициализации SD-карты!");
return;
}
Serial.println("SD-карта инициализирована успешно.");
// Установка обработчика для корневого URL
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
String html = "<html><body>";
html += "<h1>Upload MP3 File</h1>";
html += "<form action=\"/upload\" method=\"POST\" enctype=\"multipart/form-data\">";
html += "<input type=\"file\" name=\"file\">";
html += "<input type=\"submit\" value=\"Upload\">";
html += "</form>";
html += "</body></html>";
request->send(200, "text/html", html); // Отправка HTML-страницы
});
// Установка обработчика для загрузки файла
server.on("/upload", HTTP_POST, [](AsyncWebServerRequest *request){
// Обработка загрузки файла
}, handleFileUpload);
// Запуск сервера
server.begin();
Serial.println("HTTP server started");
}
void loop() {
// Обработка клиентов не требуется, так как используется асинхронный сервер
}
void handleFileUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
static File file; // Объявляем переменную file как статическую, чтобы она сохраняла свое значение между вызовами
if (!index) {
Serial.printf("Upload Start: %s\n", filename.c_str());
// Открываем файл для записи на SD-карту
file = SD.open("/" + filename, FILE_WRITE);
if (!file) {
Serial.println("Не удалось открыть файл для записи");
request->send(500, "text/plain", "Не удалось открыть файл для записи");
return;
} else {
Serial.printf("Файл %s успешно открыт для записи.\n", filename.c_str());
}
}
// Записываем данные в файл
if (len) {
file.write(data, len);
Serial.printf("Записано %d байт в файл %s\n", len, filename.c_str());
}
if (final) {
file.close();
Serial.printf("Файл %s успешно загружен\n", filename.c_str());
request->send(200, "text/plain", "Файл загружен успешно");
}
}
а если что то готовое ищите, из готового софта, то я не очень понял что вам надо, что бы посоветовать готовую программу…