Aktywne Wpisy
Lenin264 +127
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
Skopiuj link
Skopiuj linkWykop.pl
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.