pull/806/head
dami 3 weeks ago
parent 62dcd672fe
commit 4c70fb9cfa
  1. 29
      web/static/app/files.js
  2. 47
      web/utils/file.py

@ -285,7 +285,7 @@ function openFilename(obj){
var ext = getSuffixName(path);
// console.log(path,ext);
if (inArray(ext,['html','htm','php','txt','md','js','css','scss','json','c','h','pl','py','java','log','conf','sh','json','ini', 'yaml'])){
if (inArray(ext,['html','htm','php','txt','md','js','css','scss','json','c','h','pl','py','java','log','conf','sh','json','ini', 'yml','yaml'])){
onlineEditFile(0, path);
}
@ -820,9 +820,10 @@ function batch(type,access){
var names = '';
for(var i=0;i<len;i++){
if(el[i].checked == true && el[i].value != 'on'){
names += el[i].value + ',';
names += path + "/" + el[i].value + ',';
}
}
// console.log(names);
zip(names);
return;
}
@ -1300,11 +1301,6 @@ function pasteTo(path,copyName,cutName,fileName){
//压缩目录
function zip(dirName,submits) {
var dirNameArr = dirName.split('/');
var fileName = dirNameArr[dirNameArr.length-1];
var pathName = dirName.replace('/'+fileName,'');
var randStr = getRandomString(6);
if(submits != undefined){
var sfile = $("#sfile").val();
var path = $("#path").val();
@ -1330,7 +1326,22 @@ function zip(dirName,submits) {
return
}
var defaultDfile = pathName+'/'+fileName+'_'+randStr+'.tar.gz';
var randStr = getRandomString(6);
if(dirName.indexOf(',') != -1){
dirNameArrs = dirName.split(',');
dirNameArr = dirNameArrs[0].split('/');
fileName = dirNameArr[dirNameArr.length-1];
sfile = dirName;
pathName = dirNameArrs[0].replace('/'+fileName,'');
} else {
dirNameArr = dirName.split('/');
fileName = dirNameArr[dirNameArr.length-1];
sfile = fileName;
pathName = dirName.replace('/'+fileName,'');
}
var defaultDfile = pathName + '/' + fileName+'_'+randStr+'.tar.gz';
layer.open({
type: 1,
@ -1353,7 +1364,7 @@ function zip(dirName,submits) {
</div>'
//
+ '<div class="line noborder">'
+ '<input type="text" id="sfile" value="' + fileName + '" style="display:none" />'
+ '<input type="text" id="sfile" value="' + sfile + '" style="display:none" />'
+ '<input type="text" id="path" value="' + pathName + '" style="display:none" />'
+ '<span class="tname">压缩路径</span>\
<input type="text" class="bt-input-text" id="dfile" value="' + defaultDfile + '" placeholder="压缩到" style="width: 75%; display: inline-block; margin: 0px 10px 0px 0px;" />\

@ -293,12 +293,10 @@ def batchPaste(path, stype):
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'
tmps = mw.getPanelDir() + '/logs/panel_exec.log'
if sfile.find(',') == -1:
if stype == 'zip':
mw.execShell("cd '" + path + "' && zip '" + dfile + "' -r '" + sfile + "' > " + tmps + " 2>&1")
elif stype == '7z':
@ -312,17 +310,36 @@ def zip(sfile, dfile, stype, path):
return mw.returnData(False, 'rar压缩命令不存在,请安装!')
mw.execShell("cd '" + path + "' && rar a '" + dfile + "' '" + 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)
return mw.returnData(False, '未知压缩格式')
mw.writeLog("文件管理", '文件[{1}]压缩[{2}]成功!', (sfile, dfile))
return mw.returnData(True, '文件压缩成功!')
except Exception as e:
return mw.returnData(False, '文件压缩失败:'+str(e))
else:
sfiles = ''
for sfile in sfile.split(','):
if not sfile:
continue
if not os.path.exists(sfile):
return mw.returnData(False, '指定文件不存在!')
sfiles += " '" + sfile.replace(path+'/','') + "'"
if stype == 'zip':
mw.execShell("cd '" + path + "' && zip '" + dfile + "' -r " + sfiles + " > " + tmps + " 2>&1")
elif stype == '7z':
if not mw.checkBinExist('7z'):
return mw.returnData(False, '7z压缩命令不存在,请安装!')
mw.execShell("cd '" + path + "' && 7z a '" + dfile + "' -r " + sfiles + " > " + tmps + " 2>&1")
elif stype == 'tar_gz':
mw.execShell("cd '" + path + "' && tar -zcvf '" + dfile + "' " + sfiles + " > " + tmps + " 2>&1")
elif stype == 'rar':
if not mw.checkBinExist('rar'):
return mw.returnData(False, 'rar压缩命令不存在,请安装!')
mw.execShell("cd '" + path + "' && rar a '" + dfile + "' " + sfiles + " > " + tmps + " 2>&1")
else:
return mw.returnData(False, '未知压缩格式')
mw.writeLog("文件管理", '文件[{1}]压缩[{2}]成功!', (sfiles, dfile))
setFileAccept(dfile)
return mw.returnData(True, '文件压缩成功!')
def getAccess(filename):
data = {}

Loading…
Cancel
Save