提交 f5786ea5 authored 作者: GOD_ZYX's avatar GOD_ZYX

新增 node端 文档解析 并 提交大作业时 上传内容

上级 2c82fb93
......@@ -463,6 +463,11 @@
"integrity": "sha1-tfUGMfjWzsi9IMljljr7VeBsvOk=",
"dev": true
},
"adm-zip": {
"version": "0.4.13",
"resolved": "http://registry.npm.taobao.org/adm-zip/download/adm-zip-0.4.13.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fadm-zip%2Fdownload%2Fadm-zip-0.4.13.tgz",
"integrity": "sha1-WX4vjMNnIVHhMH0+lc3bx1ZyMUo="
},
"agent-base": {
"version": "4.2.1",
"resolved": "http://registry.npm.taobao.org/agent-base/download/agent-base-4.2.1.tgz",
......
......@@ -83,6 +83,7 @@
"webpack-merge": "^4.1.4"
},
"dependencies": {
"adm-zip": "^0.4.13",
"axios": "^0.18.0",
"body-parser": "^1.18.3",
"connect-history-api-fallback": "^1.5.0",
......
/* 直接处理 挂载异常 视频 - 直接挂满 */
const dealVideo = () => {
}
module.exports = {
dealVideo: dealVideo
}
......@@ -7,6 +7,7 @@ const _ = require('lodash')
const axios = require('axios')
const FormData = require('form-data')
const md5 = require('md5-node')
const AdmZip = require('adm-zip')
// const _logs = require('./logs')
/* 支持 finally函数 */
......@@ -44,6 +45,13 @@ const agentProcessor = () => {
data: req.body,
params: req.query
}
/* 测试 */
// if (/\/essay/gi.test(options.url) && /post/gi.test(req.method)) {
// console.time('essay')
// options.baseURL = 'http://192.168.3.249:8081/'
// options.url = options.url.replace(/tenant\//gi, '')
// console.log(options.baseURL + options.url)
// }
headers['accept'] = '*/*'
delete headers['accept-language']
if (/application\/x-www-form-urlencoded/gi.test(headers['content-type'])) {
......@@ -160,8 +168,19 @@ const agentProcessor = () => {
}
/* 如果是大作业提价,先docx解析,解析不出来则报错 */
if (/tenant\/util\/upload-file/gi.test(options.url) && req.body.special && req.body.special === 'course-work') {
// _fileName[0]
// debugger
let _strContent = ''
let contentXml = null
try {
let zip = new AdmZip(_fileName[0]) // filePath为文件路径
contentXml = zip.readAsText('word/document.xml') // 将document.xml读取为text内容;
contentXml.match(/<w:t[^>]*?>[\s\S]*?<\/w:t>/ig).forEach((item) => {
_strContent += item.slice(5, -6) // 不能换行,应该是 解析某些换行规则会比较慢
})
data.data.dataStr = Buffer.from(_strContent, 'utf8').toString('base64')
} catch (e) {
res.status(500).json({ message: '文档上传出错,错误原因:请不要直接修改后缀“.doc”为“.docx”或者正文内容必须大于400字', errMsg: 'err', code: 500 })
return
}
}
// setPorxyHeader(data, res)
res.status(200).send(data.data)
......
......@@ -6,6 +6,7 @@ const multer = require('multer')
const upload = multer({ dest: 'upload_tmp/' })
const _ck = require('../controller/ckeditorMonitor')
const _dvm = require('../controller/DealVideoMonitor')
const _op = require('../controller/DirMonitor')
const _websocket = require('../controller/SocketMonitor')
const _proxy = require('../controller/ProxyMonitor')
......@@ -15,6 +16,7 @@ router.use(bodyParser.urlencoded({ extended: true, limit: '600kb' }))
/* 统一API接口 */
router.post('/api/ckeditor/img/upload', upload.any(), _ck.ckeditorUpload)
router.post('/api/deal/video', upload.any(), _dvm.dealVideo)
router.post('/api/websocket/send-msg', upload.any(), _websocket.sendMsg)
router.post('/api/dir/send-msg', upload.any(), _op.dirOperate)
router.use('/api/*', upload.any(), _proxy.agentProcessor())
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论