ExpressJS Multer文件保护

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 throw err0; ^错误:在Function.sync的Object.fs.mkdirSync(fs.js:654:18)处EACCES,权限被拒绝'/ new'(/usr/lib/node_modules/multer/node_modules/mkdirp/index.js:71: 13)在module.exports(/usr/lib/node_modules/multer/storage/disk.js:65:10)处的新DiskStorage(/usr/lib/node_modules/multer/storage/disk.js:21:12)处Object中的新Multer(/usr/lib/node_modules/multer/index.js:15:20)(/usr/lib/node_modules/multer/index.js:75:12)。 (/var/www/node/server.js:10:9)在Module._compile(module.js:456:26)在Module.Module._extensions..js(module.js:474:10)。加载(module.js:356:32)

如果有人能帮助我预防这个问题,请让我来。 非常感谢。


multer正试图在全局node_modules位置创建一个目标文件夹/ new 。 将您的路径更改为本地目标。 尝试以下操作

app.use(multer({ dest: './new/'}));

如果您在上述尝试中遇到错误

app.use(multer({ dest: __dirname +'/new/'}));

你有两个主题:

1)您将全局目标路径设置为裁剪。 而且multer没有创建该路径的权限(这是正确的)。 我怀疑你想在你的项目中创建'新'目录,如果是的话,那么将你的路径改为'./new/'。 当你解决这个问题时,我们有第二个问题。

2)Multer模块更改API。 不起作用:

app.use(multer({ dest: './new/'}));

除非你有一个老版本的Muller(不使用旧版本,它有安全性)。 检查文档页面了解如何使用multer:链接。 你可以检查我的答案类似的问题:链接。 简而言之:

配置目标路径:

var upload = multer({ dest: './new' })

然后在每个你想上传文件的路线上

app.post('/profile', upload.single('fieldname'), function (req, res, next) {
//req.file has data of uploaded file
}
链接地址: http://www.djcxy.com/p/33025.html

上一篇: ExpressJS Multer File Persmission

下一篇: Unable to execute a node module within PHP