var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require('body-parser');
var multer = require('multer');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/new/'}));
这是文件的开头。在启动服务器期间始终显示以下消息
/usr/lib/node_modules/multer/node_modules/mkdirp/index.js:90 扔err0; ^错误:EACCES,权限被拒绝'/ new' at Object.fs.mkdirSync(fs.js:654:18) 在Function.sync(/usr/lib/node_modules/multer/node_modules/mkdirp/index.js:71:13) 在新的DiskStorage(/usr/lib/node_modules/multer/storage/disk.js:21:12) 在module.exports(/usr/lib/node_modules/multer/storage/disk.js:65:10) 在新的Multer(/usr/lib/node_modules/multer/index.js:15:20) 在multer(/usr/lib/node_modules/multer/index.js:75:12) 在对象。 (/var/www/node/server.js:10:9) 在Module._compile(module.js:456:26) at Object.Module._extensions..js(module.js:474:10) 在Module.load(module.js:356:32)
如果有人可以帮我防止这个问题,请告诉我。非常感谢你。
答案 0 :(得分:4)
multer正在尝试在全局node_modules位置创建目标文件夹 / new 。更改您到本地目的地的路径。请尝试以下
app.use(multer({ dest: './new/'}));
如果您在上述尝试中遇到错误
app.use(multer({ dest: __dirname +'/new/'}));
答案 1 :(得分:1)
你有两个方面:
1)您将全局目标路径设置为multer。并且multer无权创建该路径(并且它是正确的)。我怀疑你想在项目中创建“新”目录,如果是,那么将你的路径改为'./new/'。当你解决这个问题时,我们遇到了第二个问题。
2)Multer模块更改API。它不起作用:
app.use(multer({ dest: './new/'}));
除非你有旧版本的multer(不要使用旧版本,它有安全性问题)。查看文档页面,了解如何使用multer:link。您可以查看我对类似问题的回答:link。简而言之:
配置目标路径:
var upload = multer({ dest: './new' })
然后在您要上传文件的每条路线
app.post('/profile', upload.single('fieldname'), function (req, res, next) {
//req.file has data of uploaded file
}