file.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const multer = require('multer')
  2. const config = require('./config.js')
  3. const utils = require('./index')
  4. //上传的文件保存在 upload
  5. const storage = multer.diskStorage({
  6. //存储的位置
  7. destination(req, file, cb) {
  8. cb(null, config.fileSite)
  9. },
  10. //文件名字的确定 multer默认帮我们取一个没有扩展名的文件名,因此需要我们自己定义
  11. filename(req, file, cb) {
  12. let math = Math.random()
  13. math = math.toString().replace('.', '') //随机字符串
  14. cb(null, `${Date.now()}${math}-${file.originalname}`)
  15. }
  16. })
  17. //传入storage 除了这个参数我们还可以传入dest等参数
  18. let upload = multer({
  19. storage
  20. }).array(config.fileName)
  21. //上传总函数
  22. let fileEvent = (req, res) => {
  23. return new Promise((resolve, reject) => {
  24. upload(req, res, function (err) {
  25. if (err) return res.send(utils.returnData({ code: -1, msg: '上传文件错误~', req, err }))
  26. try {
  27. //循环处理
  28. let imgPath = []
  29. req.files.forEach(function (i) {
  30. const regex = /^(.+)\.[^.]+$/
  31. const regexRes = i.originalname.match(regex)
  32. let name = ''
  33. if (regexRes) name = regexRes[1]
  34. //获取临时文件的存储路径
  35. imgPath.push({ url: `${config.fileHost}/${i.filename}`, name, originalname: i.originalname, filename: i.filename, params: req.body })
  36. // console.log("i.path:",i.path)
  37. })
  38. resolve(imgPath)
  39. } catch (err) {
  40. res.send(utils.returnData({ code: -1, msg: '上传文件错误~', req, err }))
  41. }
  42. })
  43. })
  44. }
  45. module.exports = fileEvent