从ExpressJS 4 API,我发现req.files无效.如何上传文件现在使用ExpressJS 4?
Mik*_*Dev 23
升级后我刚刚遇到这个问题,req.files未定义的地方.我用multer修复它.
所以,
npm install multer
Run Code Online (Sandbox Code Playgroud)
然后在你的app.js
var multer = require('multer');
app.use(multer({ dest: './tmp/'}));
Run Code Online (Sandbox Code Playgroud)
之后我没有必要改变任何其他内容,而且我所有的旧功能都有效.
express.bodyParser默认情况下不包含在 Express 4 中。您必须单独安装。请参阅https://github.com/expressjs/body-parser
例子 :
var bodyParser = require('body-parser');
var app = connect();
app.use(bodyParser());
app.use(function (req, res, next) {
console.log(req.body) // populated!
next();
})
Run Code Online (Sandbox Code Playgroud)
还有节点强大
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
return;
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
form = new formidable.IncomingForm();
form.uploadDir = __dirname.getParent() + "/temp/";
form.parse(req, function(err, fields, files) {
var newfile, path, uid, versionName;
uid = uuid.v4();
newfile = __dirname.getParent() + "/uploads/" + uid;
copyFile(files.file.path, newfile, function(err) {
if (err) {
console.log(err);
req.flash("error", "Oops, something went wrong! (reason: copy)");
return res.redirect(req.url);
}
fs.unlink(files.file.path, function(err) {
if (err) {
req.flash("error", "Oops, something went wrong! (reason: deletion)");
return res.redirect(req.url);
}
// done!
// ...
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20796 次 |
| 最近记录: |