在Loopback3中,可以通过以下步骤将文件上传与特定模型关联起来:
loopback-component-storage
模块,该模块提供了文件上传的功能。可以通过以下命令进行安装:npm install loopback-component-storage --save
server
文件夹下创建一个storage
文件夹,用于存储上传的文件。server
文件夹下创建一个datasources.json
文件,配置文件存储的数据源。示例配置如下:{
"storage": {
"name": "storage",
"connector": "loopback-component-storage",
"provider": "filesystem",
"root": "./server/storage"
}
}
server
文件夹下创建一个model-config.json
文件,配置模型与数据源的关联。示例配置如下:{
"File": {
"dataSource": "storage",
"public": true
}
}
common/models
文件夹下创建一个file.js
文件,定义文件模型。示例代码如下:module.exports = function(File) {
File.upload = function(ctx, options, cb) {
if (!options) options = {};
ctx.req.params.container = 'storage';
File.app.models.storage.upload(ctx.req, ctx.result, options, function(err, fileObj) {
if (err) {
cb(err);
} else {
var fileInfo = fileObj.files.file[0];
File.create({
name: fileInfo.name,
type: fileInfo.type,
container: fileInfo.container,
url: '/api/containers/' + fileInfo.container + '/download/' + fileInfo.name
}, function(err, file) {
if (err) {
cb(err);
} else {
cb(null, file);
}
});
}
});
};
File.remoteMethod('upload', {
description: 'Uploads a file',
accepts: [
{ arg: 'ctx', type: 'object', http: { source: 'context' } },
{ arg: 'options', type: 'object', http: { source: 'query' } }
],
returns: { arg: 'file', type: 'object', root: true },
http: { verb: 'post', path: '/upload' }
});
};
server.js
文件中添加以下代码,启用文件上传的路由:var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});
/api/files/upload
路由,上传文件。以上步骤完成后,文件上传与Loopback3中的特定模型就关联起来了。可以根据实际需求,对文件模型进行扩展,添加更多的属性和方法。
领取专属 10元无门槛券
手把手带您无忧上云