loopback remote方法读取上传文件的内容

时间:2017-07-10 13:01:10

标签: node.js file-upload loopback

我正在尝试读取上传到loopback中创建的远程方法的文件内容。将使用邮递员调用API,并将附带请求的文件。到目前为止,我添加了以下方法,但没有运气:

module.exports = function(Upload) {

Upload.testUpload = function(file, cb) {

    fs.readFile(file, function (err, data) {
        if (err) {
            return console.error(err);
        }
        //console.log("Asynchronous read: " + data.toString());
        cb(null, data.toString(), 'application/octet-stream');
    });    
  }

  Upload.remoteMethod(
    'testUpload', {
        isStatic: true,
        returns: [
            {arg: 'body', type: 'file', root: true},
            {arg: 'Content-Type', type: 'string', http: { target: 'header' }}
        ]
    }
  );

}

有谁能请让我知道,在环回上传文件的确切方法? 感谢

2 个答案:

答案 0 :(得分:1)

在环回中上传文件的最佳方法是使用loopback-component-storage模块。使用以下命令安装模块:

npm install loopback-component-storage

使用以下代码修改server / datasources.json文件来创建数据源:

  "storage": {
    "name": "storage",
    "connector": "loopback-component-storage",
    "provider": "filesystem",
    "root": "./server/storage"
  }

通过使用以下代码更新model-config.json文件来创建“容器”模型:

  "container": {
    "dataSource": "storage",
    "public": true
  }

然后使用以下代码创建server / models / container.js和server / models / container.json:

module.exports = function(Container) {

};

{
  "name": "container",
  "base": "Model",
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

完成所有这些步骤后,我们就可以开始使用Postman上传文件了。

由于

答案 1 :(得分:0)

我在没有使用 loopback-component-storage 的情况下找到了解决方案(如果您不想保存上传的文件或者想要将文件上传逻辑直接附加到,它会非常有用model.js 文件)。

1)安装express-fileupload包:

npm i express-fileupload --save

2)将 express-fileupload 添加到 server.js 文件中:

var fileUpload = require('express-fileupload')
app.use(fileUpload())

3)更新您的模型文件,如下所示:

module.exports = function(Job) {
  Job.uploadFile = (req, res, cb) => {
    console.log(req.files)
    cb(null, null)
  }

  Job.remoteMethod('uploadFile', {
    accepts: [
      {arg: 'req', type: 'object', 'http': {source: 'req'}},
      {arg: 'res', type: 'object', 'http': {source: 'res'}},
    ],
    http: {
      path: '/upload-file',
      verb: 'post',
      status: 200,
    },
  })
}

现在,您可以使用 req.files 属性访问上传的文件。