MCPcopy Create free account
hub / github.com/OpenEPaperLink/OpenEPaperLink / handleLittleFSUpload

Function handleLittleFSUpload

ESP32_AP-Flasher/src/ota.cpp:117–187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115};
116
117void handleLittleFSUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final) {
118 String uploadfilename;
119 bool error = false;
120 if (!index) {
121 String path;
122 if (!request->hasParam("path", true)) {
123 final = true;
124 error = true;
125 } else {
126 uploadfilename = request->getParam("path", true)->value();
127 Serial.println("update " + uploadfilename);
128 File file = contentFS->open(uploadfilename, "w");
129 file.close();
130 UploadInfo* uploadInfo = new UploadInfo{uploadfilename, {}, 0};
131 request->_tempObject = (void*)uploadInfo;
132 }
133 }
134
135 UploadInfo* uploadInfo = static_cast<UploadInfo*>(request->_tempObject);
136
137 if (uploadInfo != nullptr) {
138 uploadfilename = uploadInfo->filename;
139
140 if (len) {
141 if (uploadInfo->bufferSize + len <= UPLOAD_BUFFER_SIZE) {
142 memcpy(&uploadInfo->buffer[uploadInfo->bufferSize], data, len);
143 uploadInfo->bufferSize += len;
144 } else {
145 xSemaphoreTake(fsMutex, portMAX_DELAY);
146 File file = contentFS->open(uploadfilename, "a");
147 if (file) {
148 file.write(uploadInfo->buffer, uploadInfo->bufferSize);
149 file.close();
150 uploadInfo->bufferSize = 0;
151 xSemaphoreGive(fsMutex);
152 } else {
153 xSemaphoreGive(fsMutex);
154 logLine("Failed to open file for appending: " + uploadfilename);
155 final = true;
156 error = true;
157 }
158
159 memcpy(uploadInfo->buffer, data, len);
160 uploadInfo->bufferSize = len;
161 }
162 }
163 if (final) {
164 if (uploadInfo->bufferSize > 0) {
165 xSemaphoreTake(fsMutex, portMAX_DELAY);
166 File file = contentFS->open(uploadfilename, "a");
167 if (file) {
168 file.write(uploadInfo->buffer, uploadInfo->bufferSize);
169 file.close();
170 xSemaphoreGive(fsMutex);
171 } else {
172 xSemaphoreGive(fsMutex);
173 logLine("Failed to open file for appending: " + uploadfilename);
174 error = true;

Callers

nothing calls this directly

Calls 6

memcpyFunction · 0.85
logLineFunction · 0.85
printlnMethod · 0.80
openMethod · 0.80
closeMethod · 0.80
writeMethod · 0.45

Tested by

no test coverage detected