使用Express 4.0上传的文件:req.file未定义

使用Express 4.0上传的文件:req.file未定义

我试图获得一个使用Express 4.0的简单文件上传机制,但是我一直undefinedreq.filesapp.post尸体。以下是相关代码:

var bodyParser = require('body-parser');var methodOverride = require('method-override');
//...app.use(bodyParser({ uploadDir: path.join(__dirname, 'files'), keepExtensions: true })); app.use(methodOverride());
 //...app.post('/fileupload', function (req, res) {
  console.log(req.files); 
  res.send('ok'); });

.。以及附带的帕格代码:

form(name="uploader", action="/fileupload", method="post", enctype="multipart/form-data")
    input(type="file", name="file", id="file")
    input(type="submit", value="Upload")


感谢mscdex下面,我转向使用busboy而不是bodyParser:

var fs = require('fs');var busboy = require('connect-busboy');//...app.use(busboy()); //...app.post('/fileupload', function(req, res) {
    var fstream;
    req.pipe(req.busboy);
    req.busboy.on('file', function (fieldname, file, filename) {
        console.log("Uploading: " + filename); 
        fstream = fs.createWriteStream(__dirname + '/files/' + filename);
        file.pipe(fstream);
        fstream.on('close', function () {
            res.redirect('back');
        });
    });});


开心每一天1111
浏览 2089回答 3
3回答

温温酱

看上去body-parser 做支持在Express 3中上载文件,但对Express 4的支持被删除不再包含连接作为依赖项在浏览了mscdex的答案中的一些模块之后,我发现express-busboy是一个更好的替代方案,也是最接近替代方案的替代品。我注意到的唯一不同之处是上传文件的属性。console.log(req.files)使用体解析器(Express 3)输出如下所示的对象:{ file:     { fieldName: 'file',      originalFilename: '360px-Cute_Monkey_cropped.jpg',      name: '360px-Cute_Monkey_cropped.jpg'      path: 'uploads/6323-16v7rc.jpg',      type: 'image/jpeg',      headers:        { 'content-disposition': 'form-data; name="file"; filename="360px-Cute_Monkey_cropped.jpg"',         'content-type': 'image/jpeg' },      ws:        WriteStream { /* ... */ },      size: 48614 } }相比较console.log(req.files)使用特快专递(明示4):{ file:     { field: 'file',      filename: '360px-Cute_Monkey_cropped.jpg',      file: 'uploads/9749a8b6-f9cc-40a9-86f1-337a46e16e44/file/360px-Cute_Monkey_cropped.jpg',      mimetype: 'image/jpeg',      encoding: '7bit',      truncated: false      uuid: '9749a8b6-f9cc-40a9-86f1-337a46e16e44' } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js