multer用pm2上传文件
Multer upload files with PM2
我有一个 Express 应用程序,正在使用 multer 上传文件,
问题是当我 运行 在生产服务器中使用 PM2 连接应用程序时,多个上传文件给了我一个错误:
“错误:ENOENT:没有那个文件或目录,打开 'uploads/img.png'
出错时(本机)"
但是当我 运行 它与 "Debug=projectname:* npm start" 一起工作时它工作正常。
请注意,我已经创建了具有所有权限的上传目录 "read and write for anyone"。
(抱歉我的英语不好)
我会试着猜猜问题。
在您的 pm2 中,您不会使用 cwd param,因此您的应用程序从错误的根目录开始。
我通过将相对路径更改为绝对路径解决了同样的问题
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, __dirname + '/public/uploads')
},
filename: function(req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." +
fileFormat[fileFormat.length - 1]);
}
})
我改之前的第三行如下
cb(null, './public/uploads')
我有一个 Express 应用程序,正在使用 multer 上传文件, 问题是当我 运行 在生产服务器中使用 PM2 连接应用程序时,多个上传文件给了我一个错误:
“错误:ENOENT:没有那个文件或目录,打开 'uploads/img.png' 出错时(本机)"
但是当我 运行 它与 "Debug=projectname:* npm start" 一起工作时它工作正常。
请注意,我已经创建了具有所有权限的上传目录 "read and write for anyone"。
(抱歉我的英语不好)
我会试着猜猜问题。
在您的 pm2 中,您不会使用 cwd param,因此您的应用程序从错误的根目录开始。
我通过将相对路径更改为绝对路径解决了同样的问题
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, __dirname + '/public/uploads')
},
filename: function(req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." +
fileFormat[fileFormat.length - 1]);
}
})
我改之前的第三行如下
cb(null, './public/uploads')