Aktywne Wpisy
![Lenin264](https://wykop.pl/cdn/c3397992/Lenin264_QzYAuI0Z47,q60.jpg)
Lenin264 +127
![Itslilianka](https://wykop.pl/cdn/c0834752/1060e06d466353d6cab4d161fa89b29edb0477489892df94112b0e2d757d071d,q60.jpg)
Itslilianka +514
Jakiś czas temu ta jak #rozowepaski zacząłem robić ankiety po randkach z tindera xD Beka jak to się teraz czyta po takim czasie xD #zwiazki #randkujzwykopem
![Itslilianka - Jakiś czas temu ta jak #rozowepaski zacząłem robić ankiety po randkac...](https://wykop.pl/cdn/c3201142/5723fc34abda021a9e7646751a0203db9e68328b4fa4d1d729b3091b81eeb3bb,w150.jpg)
źródło: temp_file83664017561188536
Pobierz
server.on("/upload", HTTP_POST, [](AsyncWebServerRequest * request) {
request->redirect("/");
}, handleUpload);
void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
File file;
if (!index) {
file = SD.open((String("/") + filename).c_str(), FILE_WRITE);
}
if (len) {
file.write(data, len);
}
if (final) {
file.close();
}
}
Na małych plikach powiedzmy do 1kb - wszystko działa. Ale jeśli już wysyłam plik np. 8kb czy nawet 2MB - ucina go. Co robię nie tak? Ma ktoś pomysł aby zapisywać większe pliki na karcie microSD?
uint8_t *p = data; while (len > 0) { const auto bytes_written = file.write(p, len); len -= bytes_written; p += bytes_written; }
Ale dzięki wielkie za chęci!!!
Sprawdziłem i w pętli tak to wygląda:
index: 0
len: 1304
____
index: 1304
len: 1436
___
index: 2740
len: 1436
___
index: 4176
len: 1436
___
index: 5612
len: 1436
___
index: 7048
len: 1436
____
Wystarczy, że zainicjuję zmienną file globalną i np. będę robił APPEND przy każdbym
@loginek0: nie do końca. Przecież ten sam handler może być wywołany dla wielu różnych plików.
Powinieneś mieć mapę z nazwą pliku i strukturą file:
std::map files;
Dodatkowo każdy zapis do pliku warto poprzedzić ustawieniem wskaźnika zapisu w pliku, bo nie ma chyba żadnej gwarancji, że index nie może przeskoczyć do dowolnej pozycji.