ExpressJS Multer文件持久性

时间:2015-10-03 08:08:34

标签: javascript node.js express

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)

如果有人可以帮我防止这个问题,请告诉我。非常感谢你。

2 个答案:

答案 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
}