From d4871ded1c9bcde860a6fbee3fdf053fe0de4454 Mon Sep 17 00:00:00 2001 From: sanjayk03-dev Date: Fri, 7 Jun 2024 14:17:51 +0530 Subject: [PATCH] uploading zip as formdata, storing it in config-temp --- src/js/admin-general-view.js | 7 +++++-- src/py/bbctrl/Web.py | 36 +++++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/js/admin-general-view.js b/src/js/admin-general-view.js index 017c87f..11f7ebd 100644 --- a/src/js/admin-general-view.js +++ b/src/js/admin-general-view.js @@ -61,9 +61,12 @@ module.exports = { if (!files.length) { return; } - + + const formData = new FormData(); + formData.append("zipfile", files[0]); + try { - await api.put("/api/config/restore", files[0]); + await api.put("config/restore", formData); SvelteComponents.showDialog("Message", { title: "Success", message: "Configuration restored", diff --git a/src/py/bbctrl/Web.py b/src/py/bbctrl/Web.py index 49274ba..1ed659d 100644 --- a/src/py/bbctrl/Web.py +++ b/src/py/bbctrl/Web.py @@ -295,15 +295,33 @@ class ConfigDownloadHandler(bbctrl.APIHandler): class ConfigRestoreHandler(bbctrl.APIHandler): def put(self): - zip_file = self.request.files['file'][0] - if not os.path.exists('./config-temp'): - os.mkdir('./config-temp') + if 'zipfile' not in self.request.files: + raise HTTPError(401,'No file uploaded') - if not os.path.exists(self.get_upload()): - os.mkdir(self.get_upload()) + self.get_log('ConfigRestoreHandler').info('self.request: {}'.format(str(self.request))) + + zip_file = self.request.files['zipfile'][0] - zip_path = os.path.join("./temp", zip_file['filename']) - print(zip_path) + temp_dir = './config-temp'; + if not os.path.exists(temp_dir): + os.mkdir(temp_dir) + + fmt = socket.gethostname() + '-%Y%m%d.zip' + filename = datetime.date.today().strftime(fmt) + + try: + with open(temp_dir+filename,'wb') as f: + f.write(zip_file['body']) + + except Exception as e: + raise HTTPError(500, f"Unexpected error: {str(e)}") + # if not os.path.exists(self.get_upload()): + # os.mkdir(self.get_upload()) + + + + # zip_path = os.path.join("./temp", zip_file['filename']) + # print(zip_path) # with open(zip_path, 'wb') as f: # f.write(zip_file['body']) @@ -313,10 +331,6 @@ class ConfigRestoreHandler(bbctrl.APIHandler): # for root, dirs, files in os.walk("./temp"): # for files in files: - - self.write("File processed successfully.") - self.finish() - class ConfigSaveHandler(bbctrl.APIHandler): def put_ok(self): self.get_ctrl().config.save(self.json)