const upload = multerConfig.single('userPic')
upload(req, res, (err) => {
if (err) {
reject(err)
}
else {
resolve(updateBaseUrl + imgPath + req.file.filename)
}
})
有人知道为什么upload()里面的代码为什么执行不了吗?我在本地widow环境时是可以正常运行的。放到云服务器中linux环境可以正常存储文件,但是upload()之后的代码就执行不了,导致服务器无响应
下面是完整代码
//multerConfig.js
const multer = require('multer');
const md5 = require('md5')
const path = require('path');
const { error } = require('console');
const resolve = (dir) => {
return path.join(__dirname, './', dir)
}
const storage = multer.diskStorage({
destination: function (req, file, cb) {
// 3.1.1 允许图片上传
try {
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, resolve('../uploads/infosPic'))
} else {
// 3.1.2 限制其他文件上传类型
cb(null, new Error('cuowu'))
}
}
catch {
req.cc(error)
}
},
// 3.2 存储名称
filename: function (req, file, cb) {
try {
let fileFormat = (file.originalname).split(".");
cb(null, md5(+new Date()) + "." + fileFormat[fileFormat.length - 1]);
}
catch {
req.cc(error)
}
},
});
const multerConfig = multer({
storage: storage,
});
// 5. 导出配置好的multerConfig
module.exports = multerConfig;
//修改头像
exports.updateUserpic = async (req, res) => {
const updateBaseUrl = "http:/*****" // 上传到服务器地址
const imgPath = "/api/img/infosPic/" // 上传到服务器的虚拟目录
new Promise((resolve, reject) => {
const upload = multerConfig.single('userPic')
upload(req, res, (err) => {
if (err) {
reject(err)
}
else {
resolve(updateBaseUrl + imgPath + req.file.filename)
}
})
}).then(imgUrl => {
const updataSql = `update userinfo set userpic = ? where id = ?`
const selectSql = `select userpic from userinfo where id = ?`
//查询到原头像的地址,保存到OldUserPic中
let OldUserPic
db.query(selectSql, req.user.id, (err, results) => {
if (err) {
return req.cc(err)
}
if (results.length != 1) {
return req.cc('原头像地址获取失败')
}
else {
OldUserPic = results[0]
}
})
//将数据库用户信息修改
db.query(updataSql, [imgUrl, req.user.id], (err, results) => {
if (err) {
return req.cc(err)
}
if (results.affectedRows !== 1) {
return req.cc('修改失败!请稍后重试!')
}
else {
const regex = /infosPic\/(.*)/;
const match = OldUserPic.userpic.match(regex)
if (match) {
fs.unlink(resolve('../uploads/infosPic/' + match[1]), (err) => {
console.log(err);
})
}
//将地址传给客户端
res.send({
imgUrl,
status: 0,
message: "修改成功!"
})