Iron Router接收多部分表单POST文件

时间:2015-05-08 06:54:20

标签: javascript node.js meteor iron-router

如何使用Iron Router进行服务器端路由,该路由器将接受对该给定URL的POST请求并接收POST发送的FILE / Image?我使用Collection FS作为Image Uploader和Grid FS存储图像我想要做的是使用Iron Router接收POST URL并从POST中提取文件并使用Collection FS或任何其他图像上传器上传该文件。我使用POST网址而不仅仅是上传模板事件处理程序的原因是,我正在使用的文本编辑器使用POST提交到服务器来上传图像。

2 个答案:

答案 0 :(得分:0)

经过一点点搜索,this package看起来像你想要的东西。 HTTP方法目前在meteor's roadmap上,现在看来这是一个很好的解决方案。

答案 1 :(得分:0)

你可以尝试busboy https://github.com/mscdex/busboy

铁路由器侧

this.route('/upload', {
    where: 'server',
    method: 'POST',
    name:'upload',
    onBeforeAction: (function (req, res, next) {
        //busboy code here 
    var busboy = new Busboy({ headers: req.headers });
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
        console.log('File [' + fieldname + ']: filename: ' + filename + ',    encoding: ' + encoding + ', mimetype: ' + mimetype);
        file.on('data', function(data) {
            console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
        });
        file.on('end', function() {
            console.log('File [' + fieldname + '] Finished');
        });
    });
    busboy.on('field', function(fieldname, encoding, mimetype) {
        console.log('Field [' + fieldname + ']: value: ' + inspect(val));
    });
    busboy.on('finish', function() {
        console.log('Done parsing form!');
        res.writeHead(303, { Connection: 'close', Location: '/' });
        res.end();
        next();
    });
    req.pipe(busboy);
});