Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
691cf39d
提交
691cf39d
authored
1月 08, 2019
作者:
GOD_ZYX
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
追加 上传文件 行为统计
上级
1946eb72
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
155 行增加
和
0 行删除
+155
-0
build.zip
build.zip
+0
-0
index.js
server/elearning-node/routes/index.js
+113
-0
convert_time.js
server/elearning-node/tools/convert_time.js
+37
-0
index.js
server/elearning-node/tools/index.js
+5
-0
没有找到文件。
build.zip
浏览文件 @
691cf39d
No preview for this file type
server/elearning-node/routes/index.js
浏览文件 @
691cf39d
/* 引入 公共 工具类 */
const
cTool
=
require
(
'../tools'
)
const
Router
=
require
(
'express'
).
Router
const
router
=
Router
()
const
bodyParser
=
require
(
'body-parser'
)
...
...
@@ -9,6 +11,7 @@ const conf = require('../config')
const
_
=
require
(
'lodash'
)
const
md5
=
require
(
'md5-node'
)
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path'
)
/**
* 禁止响应头 中设置 cookie值
...
...
@@ -47,6 +50,38 @@ const agentProcessor = () => {
req
.
files
.
forEach
((
elem
,
i
)
=>
{
/* 缓存文件中 名称替换,上传名称一致 会被覆盖 */
fs
.
renameSync
(
elem
.
path
,
elem
.
destination
+
elem
.
originalname
)
/* 增加 日期目录 */
let
dateDir
=
cTool
.
convertTime
.
durationToDateString
(
new
Date
().
getTime
())
/* 增加 学员目录 */
let
stuDir
=
req
.
headers
[
'cur-auth'
]
||
'其他'
fs
.
stat
(
elem
.
destination
+
dateDir
,
(
error
,
stats
)
=>
{
if
(
error
)
{
fs
.
mkdir
(
elem
.
destination
+
dateDir
,
(
error
)
=>
{
if
(
error
)
{
console
.
log
(
error
);
return
false
}
console
.
log
(
'[Node] '
+
dateDir
+
'success to create dir'
)
fs
.
mkdir
(
elem
.
destination
+
dateDir
+
'/'
+
stuDir
,
(
error
)
=>
{
if
(
error
)
{
console
.
log
(
error
);
return
false
}
console
.
log
(
'[Node] '
+
stuDir
+
'success to create dir'
)
fs
.
renameSync
(
elem
.
destination
+
elem
.
originalname
,
elem
.
destination
+
dateDir
+
'/'
+
stuDir
+
'/'
+
elem
.
originalname
)
fs
.
unlink
(
elem
.
destination
+
elem
.
originalname
,
(
error
)
=>
{
if
(
error
)
console
.
log
(
error
)
})
})
})
}
else
{
fs
.
stat
(
elem
.
destination
+
dateDir
+
'/'
+
stuDir
,
(
error
,
stats
)
=>
{
if
(
error
)
{
fs
.
mkdir
(
elem
.
destination
+
dateDir
+
'/'
+
stuDir
,
(
error
)
=>
{
if
(
error
)
{
console
.
log
(
error
);
return
false
}
console
.
log
(
'[Node] '
+
stuDir
+
'创建目录成功'
)
fs
.
renameSync
(
elem
.
destination
+
elem
.
originalname
,
elem
.
destination
+
dateDir
+
'/'
+
stuDir
+
'/'
+
elem
.
originalname
)
fs
.
unlink
(
elem
.
destination
+
elem
.
originalname
,
(
error
)
=>
{
if
(
error
)
console
.
log
(
error
)
})
})
}
else
{
fs
.
renameSync
(
elem
.
destination
+
elem
.
originalname
,
elem
.
destination
+
dateDir
+
'/'
+
stuDir
+
'/'
+
elem
.
originalname
)
fs
.
unlink
(
elem
.
destination
+
elem
.
originalname
,
(
error
)
=>
{
if
(
error
)
console
.
log
(
error
)
})
}
})
}
})
_obj
[
elem
.
fieldname
]
=
fs
.
createReadStream
(
elem
.
destination
+
elem
.
originalname
)
})
let
fro
=
new
FormData
()
...
...
@@ -116,7 +151,85 @@ 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
()
}
/* 统一API接口 */
router
.
use
(
'/api/*'
,
upload
.
any
(),
agentProcessor
(
'api'
))
router
.
post
(
'/api-abc/dir/operate'
,
upload
.
any
(),
postDirOperate
)
module
.
exports
=
router
server/elearning-node/tools/convert_time.js
0 → 100644
浏览文件 @
691cf39d
module
.
exports
=
{
/**
* 工具方法 - 日期时间 转化 y-m-d
* @param {[string]} duration 时间戳
*/
durationToDateString
:
(
duration
)
=>
{
let
y
=
new
Date
(
duration
).
getFullYear
()
let
m
=
new
Date
(
duration
).
getMonth
()
+
1
if
(
m
<
10
)
{
m
=
'0'
+
m
}
else
{
m
=
m
+
''
}
let
d
=
new
Date
(
duration
).
getDate
()
if
(
d
<
10
)
{
d
=
'0'
+
d
}
else
{
d
=
d
+
''
}
return
y
+
'-'
+
m
+
'-'
+
d
},
/**
* 工具方法 - 播放时间 转化 h:m:s
* @param {[string]} duration 时间戳
*/
durationToTimeString
:
(
duration
)
=>
{
let
h
=
Math
.
floor
(
duration
/
3600
)
let
m
=
Math
.
floor
((
duration
-
h
*
3600
)
/
60
)
let
s
=
(
duration
-
h
*
3600
-
m
*
60
)
%
60
function
tenify
(
a
)
{
return
a
>=
10
?
a
:
'0'
+
a
}
let
to
=
{
h
:
tenify
(
h
),
m
:
tenify
(
m
),
s
:
tenify
(
s
)
}
let
format
=
'h:m:s'
return
format
.
replace
(
/h|m|s/g
,
k
=>
to
[
k
]).
replace
(
/^00:/
,
''
)
}
}
server/elearning-node/tools/index.js
0 → 100644
浏览文件 @
691cf39d
const
ConvertTime
=
require
(
'./convert_time'
)
module
.
exports
=
{
convertTime
:
ConvertTime
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论