From 6858a827f99a7ad3545382dd63a141d7b14f9b9d Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Mon, 9 Dec 2024 00:53:02 +0800 Subject: [PATCH] update --- web/admin/files/files.py | 12 ++++++++++- web/utils/file.py | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/web/admin/files/files.py b/web/admin/files/files.py index 4eac52208..8a6109e73 100644 --- a/web/admin/files/files.py +++ b/web/admin/files/files.py @@ -69,7 +69,17 @@ def batch_paste(): stype = request.form.get('type', '') return file.batchPaste(path, stype) -# 获取文件内容 +# 压缩文件 +@blueprint.route('/zip', endpoint='zip', methods=['POST']) +@panel_login_required +def zip(): + sfile = request.form.get('sfile', '') + dfile = request.form.get('dfile', '') + stype = request.form.get('type', '') + path = request.form.get('path', '') + return file.zip(sfile, dfile, stype, path) + +# 复制文件内容 @blueprint.route('/copy_file', endpoint='copy_file', methods=['POST']) @panel_login_required def copy_file(): diff --git a/web/utils/file.py b/web/utils/file.py index 33cb47843..c3b593c1b 100644 --- a/web/utils/file.py +++ b/web/utils/file.py @@ -249,6 +249,51 @@ def batchPaste(path, stype): return mw.returnData(True, msg) +def zip(sfile, dfile, stype, path): + if sfile.find(',') == -1: + if not os.path.exists(path + '/' + sfile): + return mw.returnData(False, '指定文件不存在!') + + try: + tmps = mw.getPanelDir() + '/logs/panel_exec.log' + if stype == 'zip': + mw.execShell("cd '" + path + "' && zip '" + dfile + + "' -r '" + sfile + "' > " + tmps + " 2>&1") + else: + sfiles = '' + for sfile in sfile.split(','): + if not sfile: + continue + sfiles += " '" + sfile + "'" + mw.execShell("cd '" + path + "' && tar -zcvf '" + dfile + "' " + sfiles + " > " + tmps + " 2>&1") + setFileAccept(dfile) + mw.writeLog("文件管理", '文件[{1}]压缩[{2}]成功!', (sfile, dfile)) + return mw.returnData(True, '文件压缩成功!') + except: + return mw.returnData(False, '文件压缩失败!') + +def unzip(sfile, dfile, stype, path): + if not os.path.exists(sfile): + return mw.returnData(False, '指定文件不存在!') + + try: + tmps = mw.getPanelDir() + '/logs/panel_exec.log' + if stype == 'zip': + mw.execShell("cd " + path + " && unzip -o -d '" + dfile + "' '" + sfile + "' > " + tmps + " 2>&1 &") + else: + sfiles = '' + for sfile in sfile.split(','): + if not sfile: + continue + sfiles += " '" + sfile + "'" + mw.execShell("cd " + path + " && tar -zxvf " + sfiles + " -C " + dfile + " > " + tmps + " 2>&1 &") + + setFileAccept(dfile) + mw.writeLog("文件管理", '文件[{1}]解压[{2}]成功!', (sfile, dfile)) + return mw.returnData(True, '文件解压成功!') + except: + return mw.returnData(False, '文件解压失败!') + def copyDir(src_file, dst_file): if not os.path.exists(src_file): return mw.returnData(False, '指定目录不存在!')