1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kukela-MyBusinessCard

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
fs.ino 3.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
kukela Отправлено 4 лет назад b91f23d
// 获取FS信息
void handleGetFSInfo() {
FSInfo fs_info;
if (!SPIFFS.info(fs_info)) {
webServer.send(500, FPSTR(TEXT_PLAIN), "fs info error");
return;
}
maxPathLength = fs_info.maxPathLength - 1;
String json;
json.reserve(1024);
json = "{\"totalBytes\":";
json += fs_info.totalBytes;
json += ",\"usedBytes\":";
json += fs_info.usedBytes;
json += ",\"maxPathLength\":";
json += maxPathLength;
json += ",\"fList\":[";
Serial.print("blockSize:");
Serial.println(fs_info.blockSize);
Serial.print("pageSize:");
Serial.println(fs_info.pageSize);
Serial.print("totalBytes:");
Serial.println(fs_info.totalBytes);
Serial.print("usedBytes:");
Serial.println(fs_info.usedBytes);
dir = SPIFFS.openDir("");
bool isFirst = true;
while (dir.next()) {
if (isFirst) {
isFirst = false;
} else {
json += ",";
}
json += "{\"fn\":\"";
json += dir.fileName();
json += "\",\"fs\":";
json += dir.fileSize();
json += "}";
}
json += "]}";
webServer.send(200, APP_JSON, json);
}
// 上传文件
bool isError = false;
String fsSizeListStr = "";
int fsPointion = 0;
void handleFileUpload() {
HTTPUpload& upload = webServer.upload();
switch (upload.status) {
case UPLOAD_FILE_START: {
if (isError) {
break;
}
String filename = upload.filename;
fsPointion = filename.indexOf("/");
if (fsPointion != -1) {
filename = filename.substring(fsPointion, filename.length());
}
if (filename.length() > maxPathLength) {
replyServerError("路径长度不能大于" + String(maxPathLength) + "字节!");
isError = true;
return;
}
String fsSize;
if (fsSizeListStr == "") {
Serial.println(upload.name);
fsSizeListStr = upload.name;
}
fsPointion = fsSizeListStr.indexOf(',');
if (fsPointion == -1) {
fsSize = fsSizeListStr;
} else {
fsSize = fsSizeListStr.substring(0, fsPointion);
fsSizeListStr = fsSizeListStr.substring(fsPointion + 1, fsSizeListStr.length());
}
Serial.print(filename);
Serial.print(" ");
Serial.print(fsSize);
Serial.println();
file = SPIFFS.open(filename, "w");
break;
}
case UPLOAD_FILE_WRITE: {
if (!file || isError) {
break;
}
uint32_t bytesWritten = file.write(upload.buf, upload.currentSize);
if (bytesWritten != upload.currentSize) {
isError = true;
return replyServerError("写入失败!");
}
break;
}
case UPLOAD_FILE_END: {
if (!file) {
break;
}
file.close();
break;
}
}
}
void handleFileUploadAfter() {
isError = false;
fsSizeListStr = "";
webServer.send(200, FPSTR(TEXT_PLAIN), "上传成功!");
}
// 返回文件
void replyFile(String path) {
String contentType = mime::getContentType(path);
Serial.println(path + " - " + contentType);
if (!SPIFFS.exists(path)) {
if(path == getHomeUrl()) {
webServer.sendHeader("Location", "http://" + webServer.client().localIP().toString() + "/admin", true);
replyServerCode(307);
return;
}
replyServerCode(204);
return;
}
file = SPIFFS.open(path, "r");
configSendHeader();
if (webServer.streamFile(file, contentType) != file.size()) {
replyServerNotFound(path);
}
file.close();
}
// 格式化fs
bool clearFS() {
dir = SPIFFS.openDir("");
while (dir.next()) {
if (!SPIFFS.remove(dir.fileName())) {
return false;
}
}
return true;
// SPIFFS.end();
// bool isOk = SPIFFS.format();
// if (!isOk) {
// return false;
// }
// isOk = SPIFFS.begin();
// return isOk;
}

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/kukela-MyBusinessCard.git
git@gitlife.ru:oschina-mirror/kukela-MyBusinessCard.git
oschina-mirror
kukela-MyBusinessCard
kukela-MyBusinessCard
master