如何正确配置meteor以使用节点文件上传模块'multer'

Eug*_*erg 10 node.js meteor multer

我刚刚开始使用流星.

我找到了,并添加了'multer'包:

meteor add pfafman:multer
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何配置meteor的服务器端使用.

在我的普通节点应用程序中,我使用它像这样:

app.use(multer({ dest: './uploads/',
        rename: function (fieldname, filename) {
            return filename+Date.now();
        },
        onFileUploadStart: function (file) {
            console.log(file.originalname + ' is starting ...');
        },
        onFileUploadComplete: function (file) {
            console.log(file.fieldname + ' uploaded to  ' + file.path);
            var fileName = file.name;
            var done=true;
        }
    }));
Run Code Online (Sandbox Code Playgroud)

Meteor中的等效服务器代码是什么?

吖奇说*_*HUō 5

pfafman的multer只是npm的multer的包装器(如果您查看它的来源,您会意识到它真正的作用是

multer = Npm.require('multer');
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式将其导出为全局变量api.export('multer');(他甚至没有包含任何测试用例,下面是一个演示。)

在表示上,app.use()用于将中间件“层”添加到中间件堆栈。由于现在multer已经是一个全局变量,可以在服务器上的任何位置访问(在获得之后meteor add pfafman:multer),因此可以通过在以下方式中调用它来像在express中那样使用它Meteor.startup

if (Meteor.isServer) {
  Meteor.startup(function () {
    multer({ dest: './uploads/',
        rename: function (fieldname, filename) {
            return filename+Date.now();
        },
        onFileUploadStart: function (file) {
            console.log(file.originalname + ' is starting ...');
        },
        onFileUploadComplete: function (file) {
            console.log(file.fieldname + ' uploaded to  ' + file.path);
            var fileName = file.name;
            var done=true;
        }
    })
  });
}
Run Code Online (Sandbox Code Playgroud)

注意:这将在以下uploads目录中创建目录

YourMeteorProject/.meteor/local/build/programs/server/
Run Code Online (Sandbox Code Playgroud)