文件摘要获取(node)
/* eslint-disable new-cap */
/* eslint-disable camelcase */
const { router, uploadFilterExcelCsv, uploadFile } = require('../../util')
const { fapiao } = require('../../controllers/admin/pay/post')
router
.post('/fapiao', uploadFile({ name: 'file', filter: uploadFilterExcelCsv }), fapiao)
module.exports = router
../../util
/**
* 上传单个文件的处理函数
* @param {object} { filedName: 上传文件请求的字段名, fileFilter: 文件过滤函数 }
* @returns {function} (req, res, next) => {}
* @memberof Util
*/
uploadFile({ name, filter, path }) {
return multer({
storage: this.fileStorage(path),
fileFilter: filter,
limits: { fileSize: 1024 * 1024 * 10 }
}).single(name)
}
/**
* 上传文件时的文件过滤器, 只接受 excel 以及 csv 文件
* @param {Express.Request} req
* @param {File} file
* @param {function} cb
* @returns
* @memberof Service
*/
uploadFilterExcelCsv(req, file, cb) {
const { originalname } = file
if(!originalname.match(/\.(xls|xlsx|xlsm|xltx|xltm|xlsb|xlam|csv|pdf)$/)) {
return cb(new Error(req.i18n('only accept excel or csv file')), false)
}
return cb(null, true)
}
../../controllers/admin/pay/post
/* eslint-disable new-cap */
/* eslint-disable camelcase */
const fs = require('fs')
const {sm3} = require('miniprogram-sm-crypto')
class Post {
constructor() {
at(this)
}
async fapiao(req, res, next) {
try {
fs.readFile(req.file.path, (err, data) => {
console.log(sm3(data.toJSON().data));
})
res.json()
} catch (error) {
return next(error)
}
}
}
module.exports = new Post()