我正在尝试使用node.js和express 4.0.0制作一个极其简单的文件上传服务器。根据http://howtonode.org/really-simple-file-uploads我想我应该得到“req.files”,但它不存在(未定义)。
var express = require('express')
var fs = require('fs')
var app = express()
app.get('/', sendForm)
app.post('/upload', uploadFile)
app.listen(8000)
function sendForm(req, res)
{
// a form with a <input type="file">
res.send('<!doctype html><html><head></head><body><form action=\"/upload\" method=\"post\" enctype=\"multipart/form-data\"><input type=\"file\" name=\"displayImage\"><button type=\"submit\">submit</button></form></body></html>')
}
function uploadFile(req, res)
{
console.log(req.files) // prints undefined
res.redirect('back')
}
一些网站建议添加“app.use(bodyParser)”以及由“app.configure()”调用的此类内容。据我所知,“app.configure”已从express 4.0.0 中删除。
为什么 req.files 不存在?
我找到Formidabble易于使用,这就是您使用它的方式:
var formidable = require('formidable');
var fs = require('fs');
module.exports.upload = function (req, res, next) {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
if ('file' in files) {
var file = files['file'];
// Do something with file
module.exports._deleteFiles(files);
res.send(200);
} else {
module.exports._deleteFiles(files);
res.send(400);
}
});
};
module.exports._deleteFiles = function (files) {
// Delete temporary files
for (var f in files) {
fs.unlink(files[f].path);
}
};
我是一名优秀的程序员,十分优秀!