UNPKG

doomi-helper

Version:

Doomisoft NodeJs Common Utilities

56 lines (55 loc) 2.63 kB
var multer = require('multer'); var path = require('path'); var fs = require('fs'); var fileUtilily = require('./filesystem/file') /** * 设置上传保存的路径以及输出的文件名 */ var storage = multer.diskStorage({ //设置上传后文件路径,uploads文件夹会自动创建。 destination: function (req, file, cb) { ///获取上传的文件的类型,以便将文件保存到指定的目录 let filetype = req.query.filetype; ////不允许没有配置的文件 if (!filetype) { req.fileerror = {successed:false,errmsg:"missing filetype for upload"}; return cb("missing filetype for upload",null); } let configfilename = process.env.CONFIGFILE || 'configuration.json'; let configfile = path.join(process.cwd(), configfilename); let config = {}; if (fs.existsSync(configfile)) config = require(configfile).upload; let saveOption = config.mapping[filetype]; if (!saveOption) { req.fileerror = {successed:false,errmsg:"filetype not configurated in upload setting"}; return cb("filetype not configurated in upload setting",null); } req.fileconfig = saveOption; /** * 将url中的参数拼装成对象,以匹配文件存储的设置 */ let fileparam =Object.assign({},req.user,req.query); let destinationFolder = fileUtilily.getSaveFoler(saveOption,fileparam); ///文件上传后的短路径,相对路径, req.shortpath = destinationFolder; ////如果目录不存在,则创建目录 destinationFolder = path.join(config.dest,destinationFolder); if (!fs.existsSync(destinationFolder)) fileUtilily.mkdirsSync(path.resolve(destinationFolder)) cb(null, destinationFolder) }, //给上传文件重命名,获取添加后缀名 filename: function (req, file, cb) { let saveOption =req.fileconfig; //this.config.mapping[filetype]; if (!saveOption) { req.fileerror = {successed:false,errmsg:"filetype not configurated in upload setting"}; cb("filetype not configurated in upload setting",null); } let finalFile = fileUtilily.getSaveOnlyFileName(saveOption,file.originalname); req.shortpath = path.join(req.shortpath,finalFile); cb(null,finalFile); //cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]); } }); //添加配置文件到muler对象。 var upload = multer({storage: storage}); exports = module.exports = upload;