Ema*_*lib 0 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/'}));
Run Code Online (Sandbox Code Playgroud)
这是文件的开始。在启动服务器期间它总是显示以下消息
/usr/lib/node_modules/multer/node_modules/mkdirp/index.js:90 throw err0; ^ 错误:EACCES,在 Object.fs.mkdirSync (fs.js:654:18) at 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) at module.exports (/usr/lib/node_modules/multer/storage/disk.js:65:10) at对象处的 multer (/usr/lib/node_modules/multer/index.js:75:12) 处的新 Multer (/usr/lib/node_modules/multer/index.js:15:20)。(/var/www/node/server.js:10:9) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module。加载(module.js:356:32)
如果有人可以帮助我防止这个问题,请告诉我。非常感谢。
multer 正在尝试在全局 node_modules 位置创建目标文件夹/new。更改到本地目的地的路径。尝试以下
app.use(multer({ dest: './new/'}));
Run Code Online (Sandbox Code Playgroud)
如果您在上述尝试中遇到错误
app.use(multer({ dest: __dirname +'/new/'}));
Run Code Online (Sandbox Code Playgroud)
你有两个问题:
1) 您将全局目标路径设置为 multer。并且 multer 无权创建该路径(并且它是正确的)。我怀疑您想在项目中创建“新”目录,如果是,则将路径更改为“./new/”。当你解决这个问题时,我们就会遇到第二个问题。
2) Multer模块更改API。不起作用:
app.use(multer({ dest: './new/'}));
Run Code Online (Sandbox Code Playgroud)
除非您有旧版本的 multer(不要使用旧版本,它有安全问题)。检查文档页面以了解如何使用 multer: link。您可以查看我对类似问题的回答:链接。简而言之:
配置目标路径:
var upload = multer({ dest: './new' })
Run Code Online (Sandbox Code Playgroud)
然后在您要上传文件的每个路线中
app.post('/profile', upload.single('fieldname'), function (req, res, next) {
//req.file has data of uploaded file
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4897 次 |
| 最近记录: |