file.js 1.7 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});
  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;