|
|
@ -16,6 +16,79 @@ import shutil |
|
|
|
import core.mw as mw |
|
|
|
import core.mw as mw |
|
|
|
import thisdb |
|
|
|
import thisdb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def uploadSegmentApi(self): |
|
|
|
|
|
|
|
# 分段上传 |
|
|
|
|
|
|
|
path = request.form.get('path', '') |
|
|
|
|
|
|
|
name = request.form.get('name', '') |
|
|
|
|
|
|
|
size = request.form.get('size') |
|
|
|
|
|
|
|
start = request.form.get('start') |
|
|
|
|
|
|
|
dir_mode = request.form.get('dir_mode', '') |
|
|
|
|
|
|
|
file_mode = request.form.get('file_mode', '') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not mw.fileNameCheck(name): |
|
|
|
|
|
|
|
return mw.returnData(False, '文件名中不能包含特殊字符!') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if path == '/': |
|
|
|
|
|
|
|
return mw.returnData(False, '不能直接上传文件到系统根目录!') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if name.find('./') != -1 or path.find('./') != -1: |
|
|
|
|
|
|
|
return mw.returnData(False, '错误的参数') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not os.path.exists(path): |
|
|
|
|
|
|
|
os.makedirs(path, 493) |
|
|
|
|
|
|
|
if not dir_mode != '' or not file_mode != '': |
|
|
|
|
|
|
|
mw.setMode(path) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
save_path = os.path.join( |
|
|
|
|
|
|
|
path, name + '.' + str(int(size)) + '.upload.tmp') |
|
|
|
|
|
|
|
d_size = 0 |
|
|
|
|
|
|
|
if os.path.exists(save_path): |
|
|
|
|
|
|
|
d_size = os.path.getsize(save_path) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if d_size != int(start): |
|
|
|
|
|
|
|
return str(d_size) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f = open(save_path, 'ab') |
|
|
|
|
|
|
|
b64_data = request.form.get('b64_data', '0') |
|
|
|
|
|
|
|
if b64_data == '1': |
|
|
|
|
|
|
|
import base64 |
|
|
|
|
|
|
|
b64_data = base64.b64decode(args.b64_data) |
|
|
|
|
|
|
|
f.write(b64_data) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
upload_files = request.files.getlist("blob") |
|
|
|
|
|
|
|
for tmp_f in upload_files: |
|
|
|
|
|
|
|
f.write(tmp_f.read()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f.close() |
|
|
|
|
|
|
|
f_size = os.path.getsize(save_path) |
|
|
|
|
|
|
|
if f_size != int(size): |
|
|
|
|
|
|
|
return str(f_size) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
new_name = os.path.join(path, name) |
|
|
|
|
|
|
|
if os.path.exists(new_name): |
|
|
|
|
|
|
|
if new_name.find('.user.ini') != -1: |
|
|
|
|
|
|
|
mw.execShell("chattr -i " + new_name) |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
os.remove(new_name) |
|
|
|
|
|
|
|
except: |
|
|
|
|
|
|
|
mw.execShell("rm -f %s" % new_name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
os.renames(save_path, new_name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if dir_mode != '' and dir_mode != '': |
|
|
|
|
|
|
|
mode_tmp1 = dir_mode.split(',') |
|
|
|
|
|
|
|
mw.setMode(path, mode_tmp1[0]) |
|
|
|
|
|
|
|
mw.setOwn(path, mode_tmp1[1]) |
|
|
|
|
|
|
|
mode_tmp2 = file_mode.split(',') |
|
|
|
|
|
|
|
mw.setMode(new_name, mode_tmp2[0]) |
|
|
|
|
|
|
|
mw.setOwn(new_name, mode_tmp2[1]) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
self.setMode(new_name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msg = mw.getInfo('上传文件[{1}] 到 [{2}]成功!', (new_name, path)) |
|
|
|
|
|
|
|
mw.writeLog('文件管理', msg) |
|
|
|
|
|
|
|
return mw.returnData(True, '上传成功!') |
|
|
|
|
|
|
|
|
|
|
|
def uncompress(sfile, dfile, path): |
|
|
|
def uncompress(sfile, dfile, path): |
|
|
|
if not os.path.exists(sfile): |
|
|
|
if not os.path.exists(sfile): |
|
|
|
return mw.returnData(False, '指定文件不存在!') |
|
|
|
return mw.returnData(False, '指定文件不存在!') |
|
|
|