Expressjs bodyParser 和 connect-form

Posted

技术标签:

【中文标题】Expressjs bodyParser 和 connect-form【英文标题】:Expressjs bodyParser and connect-form 【发布时间】:2012-01-18 20:41:28 【问题描述】:

我正在使用连接表单上传图片。但如果我使用bodyParser(),它就不起作用。 反过来,如果我不使用 bodyParser,我不能上传文件?

如何让他们一起玩?这是我的配置:

app.configure(function() 
    app.register('.html', require('ejs'));
    app.set('views', __dirname + '/../views');
    app.set('view engine', 'html');
    app.use(gzippo.staticGzip(__dirname + '/../public'), maxAge: 86400000 );
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(form( 
        keepExtensions: true,
        uploadDir: __dirname + '/../tmp'
    ));
    app.use(express.cookieParser());
    app.use(express.session(
        secret: 'test',
        cookie:  secure: true ,
        store: new mysqlSessionStore(client.database, client.user, client.password)
    ));
    app.use(expressValidator);
    app.use(app.router);
    app.use(express.csrf());
);

【问题讨论】:

【参考方案1】:

如果您使用的是最新的 Express,则不需要包含 connect-form(自 Connect 1.8.x 起已弃用)。

只需在您的路由中使用 req.files 即可获取上传的文件,其余的由 Express 完成。看看这篇文章:

http://tjholowaychuk.com/post/12943975936/connect-1-8-0-multipart-support

【讨论】:

哦,太好了 :) 但现在我的文件名有问题。使用req.files.image.filename,我在上传之前获得了图像的名称。它被重命名为随机字符串或之后的东西。那个套装在哪里?似乎找不到关于该主题的任何内容? 您将获得图像的名称和路径。只需将该图像从临时位置移动到所需位置即可:) 链接失效了,最好把答案放在这里而不是粘贴链接 链接现在是tjholowaychuk.tumblr.com/post/12943975936/… 但我认为整个方法现在已经过时了,搜索node.js express multipart。我最终使用了 multer

以上是关于Expressjs bodyParser 和 connect-form的主要内容,如果未能解决你的问题,请参考以下文章

使用async/await——Nodejs+ExpressJs+Babel

Express JS 中的中间件是啥

将 Google Cloud Platform 的错误报告与 ExpressJS 一起使用

Passport AngularJS ExpressJS:Access-Control-Allow-Origin 不允许 Origin null

BodyParser:意外令牌 -

使用 bodyParser 和 Router() 无法检索表单输入