Expressjs的bodyParser和connect-form

5

我正在使用连接表单上传图片。但是如果我使用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个回答

5

哦,那很好 :) 但现在我有一个文件名的问题。使用 req.files.image.filename,我可以获取上传前图像的名称。然后它会被重命名为随机字符串或其他内容。这是在哪里设置的?似乎找不到任何相关主题的信息? - georgesamper
你会得到图像的名称和路径。只需将该图像从临时位置移动到所需位置,就可以了 :) - alessioalex
链接现在已经失效了,最好是在此处提供答案而不是粘贴链接。 - Mark Chorley
链接现在是http://tjholowaychuk.tumblr.com/post/12943975936/connect-180-multipart-support,但我认为整个方法现在已经过时了,请搜索node.js express multipart。我最终使用了multer。 - Astra Bear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接