diff --git a/src/modules/user/user.controller.js b/src/modules/user/user.controller.js index 07225a5..57f7901 100644 --- a/src/modules/user/user.controller.js +++ b/src/modules/user/user.controller.js @@ -4,6 +4,12 @@ const MsgCode = require('../msgCode/msgCode.controller'); const changePwd = require('../sign/sign.controller').changePasswd; const Crypto = require('../../utils/crypto'); const { parseForm } = require('../../utils/form'); +const { USER_FILE_DIR: userFileDir } = require('../../../configSec.js'); +const fs = require('fs'); + +if (!fs.existsSync(userFileDir)) { + fs.mkdirSync(userFileDir); +} module.exports = { changePwd, @@ -147,7 +153,8 @@ module.exports = { async verify (req, res) { const { userId } = res.locals.user; const form = await parseForm(req, { - uploadDir: `./userImages/${userId}`, + tag: userId, + uploadDir: userFileDir, maxFileSize: 20 * 1024 * 1024, // 限制文件体积最大20m keepExtensions: true, encoding: 'utf-8' diff --git a/src/utils/form.js b/src/utils/form.js index 35e9e64..e636479 100644 --- a/src/utils/form.js +++ b/src/utils/form.js @@ -5,6 +5,13 @@ module.exports = { if (!req) return null; const form = new formidable.IncomingForm(); Object.assign(form, config); + form.on('fileBegin', function (name, file) { + file.path = file.path.replace(/(?<=\/)\S+(?=\.)/, `${config.tag}_${name}`); + }); + form.onPart = function (part) { + if (part.filename && (part.mime !== "image/png" && part.mime !== "image/jpeg")) return 0; + form.handlePart(part); + }; return new Promise((resolve, reject) => { form.parse(req, function (err, fields, data) { if (err) return reject(err);