ejs的静态资源都是来自于文件夹public!!!
因为无论ejs怎么写路径,加载的时候都是以host:port/ avatar/ name.jpg . 而此路径默认加载的是public的avatar文件夹、
所以,提交文件到服务器的时候,直接指定文件夹为public中的子文件夹(/avatar),之后再ejs模板中直接用 ./ avatar 即可。
// 处理上传头像
exports.doSetAvatar = function(req, res, next){
let form = new formidable.IncomingForm();
// 设置上传文件夹
form.uploadDir = './public/avatar'; //用于设置文件或图片上传的存放路径,为绝对物理路径 **直接放在public下**
//以post方式提交的表单域数据都放在fields这个对象当中,以post方式上传的文件、图片等文件域数据都放在files
form.parse(req, (err, fields, files) => {
//返回path路径文件扩展名,如果path以 ‘.' 为结尾,将返回 ‘.',如果无扩展名 又 不以'.'结尾,将返回空值。
let extname = path.extname(files.avatar.name);
let oldPath = files.avatar.path;
let newPath = './public/avatar' + '/' + req.session.oid + extname;
console.log(newPath)
//使用fs.rename()方法对其进行改名的操作,使其上传之后的文件名与之前的保持一致,并且