Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
bf33e75f
提交
bf33e75f
authored
1月 19, 2019
作者:
GOD_ZYX
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
73a4bfff
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
80 行增加
和
77 行删除
+80
-77
build.zip
build.zip
+0
-0
index.js
server/routes/index.js
+80
-77
没有找到文件。
build.zip
浏览文件 @
bf33e75f
No preview for this file type
server/routes/index.js
浏览文件 @
bf33e75f
...
...
@@ -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 path = require('path')
/* 支持 finally函数 */
require
(
'promise.prototype.finally'
).
shim
()
...
...
@@ -23,6 +23,11 @@ require('promise.prototype.finally').shim()
/* 通过API统一过拦截器,接口代理转发请求 */
const
agentProcessor
=
()
=>
{
return
(
req
,
res
)
=>
{
// if (req.path) {
// postDirOperate(req, res)
// return
// }
let
timestamp
=
new
Date
().
getTime
()
const
signStr
=
req
.
headers
[
'cur-auth'
]
+
':'
+
req
.
params
[
0
]
+
':'
+
timestamp
const
uuid
=
md5
(
signStr
)
...
...
@@ -164,82 +169,82 @@ 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
||
''
//
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'
:
'没有权限,访问该接口'
})
}
}
//
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 _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以上返回格式 */
...
...
@@ -340,10 +345,8 @@ const getClientIP = (req) => {
req
.
socket
.
remoteAddress
||
req
.
connection
.
socket
.
remoteAddress
}
let
uploadImgToOSS
=
[
'a'
,
'p'
,
'i'
,
'-'
,
'a'
,
'b'
,
'c'
,
'/'
,
'u'
,
'p'
,
'l'
,
'o'
,
'a'
,
'd'
,
'/'
,
'i'
,
'm'
,
'g'
,
'-'
,
't'
,
'o'
,
'-'
,
'o'
,
's'
,
's'
]
/* 统一API接口 */
router
.
post
(
'/api/ckeditor/img/upload'
,
upload
.
any
(),
ckeditorUpload
)
router
.
post
(
'/api/'
+
uploadImgToOSS
.
join
(),
postDirOperate
)
router
.
use
(
'/api/*'
,
upload
.
any
(),
agentProcessor
(
'api'
))
module
.
exports
=
router
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论