'
- +'
'
- +''
- +''+lan.files.zip_to+'\
- \
- '
- +'
'
- +'
'
- +''
- +''
- +'
'
+ title: '压缩文件['+fileName+']',
+ btn: ['确定','取消'],
+ content: '
',
success:function(){
- $("#dfile").change(function(){
- var dfile = $(this).val()
- tmp = dfile.split('.');
- if(tmp[tmp.length-1] != 'gz'){
- var path = $("#DirPathPlace input").val();
- tmp = path.split('/');
- dfile += '/' + tmp[tmp.length-1] + '.tar.gz'
- $(this).val(dfile.replace(/\/\//g,'/'))
+ $('#change_dir').click(function(){
+ changePathCallback('dfile', function(val){
+ var z_type = $('select[name="z_type"]').val();
+ $('#dfile').val(val+'/'+fileName+'_'+randStr+'.'+z_type.replace('_','.'));
+ $('#path').val(val);
+ });
+ });
+
+ $('select[name="z_type"]').change(function(){
+ var z_type = $(this).val();
+ var path = $('#path').val();
+ var newPathName = path+'/'+fileName+'_'+randStr;
+ if (z_type == 'tar_gz') {
+ $("#dfile").val(newPathName + '.tar.gz');
+ } else if (z_type == 'zip') {
+ $("#dfile").val(newPathName + '.zip');
+ } else if (z_type == 'rar') {
+ $("#dfile").val(newPathName + '.rar');
+ } else if (z_type == 'gz') {
+ $("#dfile").val(newPathName + '.gz');
+ } else if (z_type == '7z') {
+ $("#dfile").val(newPathName + '.7z');
}
});
+
+ $("#dfile").change(function(){
+ var dfile = $(this).val();
+ $(this).val(dfile.replace(/\/\//g,'/'));
+ });
+ },
+ btn1: function(index){
+ zip(dirName,1);
+ return false;
}
});
@@ -1424,7 +1458,7 @@ function unZip(fileName, type) {
function isCompressFile(fileName){
var ext = fileName.split('.');
var extName = ext[ext.length-1].toLowerCase();
- var support = ['zip','gz','tgz','rar'];
+ var support = ['zip','gz','tgz','rar','7z'];
for (x in support) {
if (support[x]==extName){
return true;
diff --git a/web/utils/file.py b/web/utils/file.py
index 002526b77..eefb76fee 100644
--- a/web/utils/file.py
+++ b/web/utils/file.py
@@ -140,11 +140,14 @@ def uncompress(sfile, dfile, path):
if suffix_gz == tar_gz:
extension = suffix_gz
- if not extension in ['tar.gz', 'gz', 'zip', 'rar']:
+ if not extension in ['tar.gz', 'gz', 'zip', 'rar', '7z']:
return mw.returnData(False, '现在仅支持gz,zip,rar格式解压!')
- if mw.isAppleSystem() and extension == 'rar':
- return mw.returnData(False, 'macosx暂时不支持rar格式解压')
+ if extension == 'rar' and not mw.checkBinExist('rar'):
+ return mw.returnData(False, 'rar解压命令不存在,请安装!')
+ if extension == '7z' and not mw.checkBinExist('7z'):
+ return mw.returnData(False, '7z解药命令不存在,请安装!')
+
cmd = "cd " + path + " "
try:
@@ -152,15 +155,18 @@ def uncompress(sfile, dfile, path):
if extension == 'zip':
cmd += "&& unzip -o -d '" + dfile + "' '" + sfile + "' > " + tmps + " 2>&1 &"
mw.execShell(cmd)
- if extension == 'tar.gz':
+ elif extension == 'tar.gz':
cmd += "&& tar -zxvf " + sfile + " -C " + dfile + " > " + tmps + " 2>&1 &"
mw.execShell(cmd)
- if extension == 'gz':
+ elif extension == 'gz':
cmd += "&& gunzip -k " + sfile + " > " + tmps + " 2>&1 &"
mw.execShell(cmd)
- if extension == 'rar':
+ elif extension == 'rar':
cmd += "&& unrar x " + sfile + " " + dfile + " > " + tmps + " 2>&1 &"
mw.execShell(cmd)
+ elif extension == '7z':
+ cmd += "&& 7z x " + sfile + " -r -o" + dfile + " > " + tmps + " 2>&1 &"
+ mw.execShell(cmd)
if os.path.exists(dfile):
setFileAccept(dfile)
@@ -286,8 +292,13 @@ def zip(sfile, dfile, stype, path):
try:
tmps = mw.getPanelDir() + '/logs/panel_exec.log'
if stype == 'zip':
- mw.execShell("cd '" + path + "' && zip '" + dfile +
- "' -r '" + sfile + "' > " + tmps + " 2>&1")
+ mw.execShell("cd '" + path + "' && zip '" + dfile + "' -r '" + sfile + "' > " + tmps + " 2>&1")
+ elif stype == '7z':
+ mw.execShell("cd '" + path + "' && 7z a '" + dfile + "' -r '" + sfile + "' > " + tmps + " 2>&1")
+ elif stype == 'tar_gz':
+ mw.execShell("cd '" + path + "' && tar -zcvf '" + dfile + "' " + sfile + " > " + tmps + " 2>&1")
+ elif stype == 'rar':
+ mw.execShell("cd '" + path + "' && rar a '" + dfile + "' '" + sfile + "' > " + tmps + " 2>&1")
else:
sfiles = ''
for sfile in sfile.split(','):
@@ -298,8 +309,8 @@ def zip(sfile, dfile, stype, path):
setFileAccept(dfile)
mw.writeLog("文件管理", '文件[{1}]压缩[{2}]成功!', (sfile, dfile))
return mw.returnData(True, '文件压缩成功!')
- except:
- return mw.returnData(False, '文件压缩失败!')
+ except Exception as e:
+ return mw.returnData(False, '文件压缩失败:'+str(e))
def unzip(sfile, dfile, stype, path):
if not os.path.exists(sfile):