From 8d06de5792430a61b69495a1af694db19d6fefd9 Mon Sep 17 00:00:00 2001 From: Slider0007 Date: Mon, 1 May 2023 14:22:15 +0200 Subject: [PATCH] Process related file update: no folder content redirect --- .../jomjol_fileserver_ota/server_file.cpp | 67 ++++++++++++------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/code/components/jomjol_fileserver_ota/server_file.cpp b/code/components/jomjol_fileserver_ota/server_file.cpp index 1bb65e35..fbf514ec 100644 --- a/code/components/jomjol_fileserver_ota/server_file.cpp +++ b/code/components/jomjol_fileserver_ota/server_file.cpp @@ -717,7 +717,8 @@ static esp_err_t upload_post_handler(httpd_req_t *req) /* Close file upon upload completion */ fclose(fd); - ESP_LOGI(TAG, "File reception complete"); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "File saved: " + string(filename)); + ESP_LOGI(TAG, "File reception completed"); std::string directory = std::string(filepath); size_t zw = directory.find("/"); @@ -736,21 +737,27 @@ static esp_err_t upload_post_handler(httpd_req_t *req) // ESP_LOGD(TAG, "Directory danach 2: %s", directory.c_str()); /* Redirect onto root to see the updated file list */ - httpd_resp_set_status(req, "303 See Other"); - httpd_resp_set_hdr(req, "Location", directory.c_str()); + if (strcmp(filename, "/config/config.ini") == 0 || + strcmp(filename, "/config/ref0.jpg") == 0 || + strcmp(filename, "/config/ref0_org.jpg") == 0 || + strcmp(filename, "/config/ref1.jpg") == 0 || + strcmp(filename, "/config/ref1_org.jpg") == 0 || + strcmp(filename, "/config/reference.jpg") == 0 || + strcmp(filename, "/img_tmp/ref0.jpg") == 0 || + strcmp(filename, "/img_tmp/ref0_org.jpg") == 0 || + strcmp(filename, "/img_tmp/ref1.jpg") == 0 || + strcmp(filename, "/img_tmp/ref1_org.jpg") == 0 || + strcmp(filename, "/img_tmp/reference.jpg") == 0 ) + { + httpd_resp_set_status(req, HTTPD_200); // Avoid reloading of folder content + } + else { + httpd_resp_set_status(req, "303 See Other"); // Reload folder content after upload + } - /* Redirect onto root to see the updated file list */ - httpd_resp_set_status(req, "303 See Other"); httpd_resp_set_hdr(req, "Location", directory.c_str()); httpd_resp_sendstr(req, "File uploaded successfully"); -/* - if (strcmp(filepath, CONFIG_FILE) == 0) { - ESP_LOGD(TAG, "New config found. Reload handler."); - gpio_handler_deinit(); - MQTTdestroy(); - } -*/ return ESP_OK; } @@ -844,9 +851,10 @@ static esp_err_t delete_post_handler(httpd_req_t *req) return ESP_FAIL; } - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Deleting file: " + string(filename)); /* Delete file */ unlink(filepath); + LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "File deleted: " + string(filename)); + ESP_LOGI(TAG, "File deletion completed"); directory = std::string(filepath); size_t zw = directory.find("/"); @@ -863,16 +871,29 @@ static esp_err_t delete_post_handler(httpd_req_t *req) directory = directory.substr(start_fn, found - start_fn + 1); directory = "/fileserver" + directory; ESP_LOGD(TAG, "Directory danach 4: %s", directory.c_str()); - } + ////////////////////////////////////////////////////////////// + /* Redirect onto root to see the updated file list */ + if (strcmp(filename, "/config/config.ini") == 0 || + strcmp(filename, "/config/ref0.jpg") == 0 || + strcmp(filename, "/config/ref0_org.jpg") == 0 || + strcmp(filename, "/config/ref1.jpg") == 0 || + strcmp(filename, "/config/ref1_org.jpg") == 0 || + strcmp(filename, "/config/reference.jpg") == 0 || + strcmp(filename, "/img_tmp/ref0.jpg") == 0 || + strcmp(filename, "/img_tmp/ref0_org.jpg") == 0 || + strcmp(filename, "/img_tmp/ref1.jpg") == 0 || + strcmp(filename, "/img_tmp/ref1_org.jpg") == 0 || + strcmp(filename, "/img_tmp/reference.jpg") == 0 ) + { + httpd_resp_set_status(req, HTTPD_200); // Avoid reloading of folder content + } + else { + httpd_resp_set_status(req, "303 See Other"); // Reload folder content after upload + } + } - - -////////////////////////////////////////////////////////////// - - /* Redirect onto root to see the updated file list */ - httpd_resp_set_status(req, "303 See Other"); httpd_resp_set_hdr(req, "Location", directory.c_str()); httpd_resp_sendstr(req, "File successfully deleted"); return ESP_OK; @@ -929,7 +950,7 @@ std::string unzip_new(std::string _in_zip_file, std::string _target_zip, std::st // Get and print information about each file in the archive. int numberoffiles = (int)mz_zip_reader_get_num_files(&zip_archive); - LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Numbers of files to be extracted: " + to_string(numberoffiles)); + LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Files to be extracted: " + to_string(numberoffiles)); sort_iter = 0; { @@ -993,7 +1014,7 @@ std::string unzip_new(std::string _in_zip_file, std::string _target_zip, std::st string filename_zw = zw + SUFFIX_ZW; - ESP_LOGI(TAG, "Filename to extract: %s, Zwischenfilename: %s", zw.c_str(), filename_zw.c_str()); + ESP_LOGI(TAG, "File to extract: %s, Temp. Filename: %s", zw.c_str(), filename_zw.c_str()); std::string folder = filename_zw.substr(0, filename_zw.find_last_of('/')); MakeDir(folder); @@ -1097,7 +1118,7 @@ void unzip(std::string _in_zip_file, std::string _target_directory){ // Save to File. zw = std::string(archive_filename); zw = _target_directory + zw; - ESP_LOGD(TAG, "Filename to extract: %s", zw.c_str()); + ESP_LOGD(TAG, "File to extract: %s", zw.c_str()); FILE* fpTargetFile = fopen(zw.c_str(), "wb"); fwrite(p, 1, (uint)uncomp_size, fpTargetFile); fclose(fpTargetFile);