我正在尝试读取上传到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' }}
]
}
);
}
有谁能请让我知道,在环回上传文件的确切方法? 感谢
答案 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 属性访问上传的文件。