我正在尝试使用NodeJS上传文件,我尝试过最常见的多部分库,但无法使其正常工作。
当我发送文件时,我没有得到任何不存在的错误,该错误不存在称为完成的方法。我单独尝试过类似的模块,效果很好。有可能有一些var崩溃?我做了一些console.log,util,我没有得到任何变量形式。
这是一段代码。如果您有任何好主意尝试解决此问题并且需要更多代码,请随时提出来!
var express = require('express');
var form = require('formidable');
var app = module.exports = express.createServer(
express.favicon()
, express.bodyParser()
, express.cookieParser()
, express.session({secret: 'topsecret'})
, everyauth.middleware()
, express.router(routes)
);
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: "aiudhasiudj12" }));
app.use(everyauth.middleware());
app.use(app.router);
app.set('view engine', 'jade');
app.use('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
app.use(form({ keepExtensions: true }));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
everyauth.everymodule
.findUserById( function (userId, callback) {
Login.findLocalByEmail([userId], function (error, results) {
callback(null, { userId: userId, data: results});
});
});
everyauth.facebook...
[...]
app.get('/la', function(req, res){
res.send('<form action="la" method="post" enctype="multipart/form-data">'
+ '<p>Image: <input type="file" name="image" /></p>'
+ '<p><input type="submit" value="Upload" /></p>'
+ '</form>');
//console.log(util.inspect(form, true, null));
});
app.post('/la', function(req, res) {
console.log(util.inspect(req.form, true, null));
req.form.complete(function(err, fields, files) {
console.log(fields);
console.log(files);
if(err) {
next(err);
} else {
}
});
});
谢谢!
答案 0 :(得分:2)
Express包括connect,包括强大的。
您所要做的就是使用bodyParser并检查“req.body”,它应该包含表单的所有字段。
答案 1 :(得分:1)
你有两个选择。
如果您想使用req.form
,则需要使用https://github.com/dandean/express-form中间件。
但是,假设您确实想要使用formidable
,那么您在请求处理程序中编写的正确代码将如下所示。
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(sys.inspect({fields: fields, files: files}));
});
答案 2 :(得分:0)
如果你的html表单中的文件输入名称是“image”,那么你需要检查“req.files.image”。请尝试以下方法:
console.log('File name: ' + req.files.image.name);