File Loopback4文件上载存储组件示例

File Loopback4文件上载存储组件示例,file,upload,components,storage,loopback,File,Upload,Components,Storage,Loopback,我正在寻找一个使用loopback4的文件存储示例,是否有人可以为文件crud操作提供控制器配置?LoopBack 4没有为多部分文件上载请求提供内置解析器。相反,我们提供了扩展点,允许应用程序使用第三方解析器,如 有两个选项可以选择如何编写接受文件上载的控制器。您可以在我们的文档中了解有关此主题的更多信息,请参阅和 1。使用控制器方法处理文件上载 指示环回将原始主体流传递给控制器方法。在控制器方法中,调用文件上载解析器来处理多部分流 好处:不同的端点可能希望以不同的方式处理上载的文件。通过在控

我正在寻找一个使用loopback4的文件存储示例,是否有人可以为文件crud操作提供控制器配置?

LoopBack 4没有为多部分文件上载请求提供内置解析器。相反,我们提供了扩展点,允许应用程序使用第三方解析器,如

有两个选项可以选择如何编写接受文件上载的控制器。您可以在我们的文档中了解有关此主题的更多信息,请参阅和

1。使用控制器方法处理文件上载

指示环回将原始主体流传递给控制器方法。在控制器方法中,调用文件上载解析器来处理多部分流

好处:不同的端点可能希望以不同的方式处理上载的文件。通过在控制器方法中实现文件上传解析,可以很容易地定制此过程的各个方面

交叉过帐示例来自:

import*作为“multer”中的multer;
类FileUploadController{
@post(“/show body”{
答复:{
//(为简洁起见省略)
},
})
异步显示体(
@请求主体({
描述:“多部分/表单数据值”,
要求:正确,
内容:{
“多部分/表单数据”:{
//跳过正文分析
“x-parser”:“stream”,
架构:{type:'object'},
},
},
})
请求:请求,
@inject(RestBindings.Http.RESPONSE)RESPONSE:RESPONSE,
):承诺{
const storage=multer.memoryStorage();
const upload=multer({storage});
返回新承诺((解决、拒绝)=>{
upload.any()(请求、响应、错误=>{
如果(错误)拒绝(错误);
否则{
决心({
文件:request.files,
字段:(如有请求)。字段,
});
}
});
});
}
2.为多部分文件上传实现并注册正文解析器

在这个选项中,所有文件上传都在传输层以与所有控制器方法相同的方式进行处理。控制器方法接收解析的数据

示例主体解析器实现来自:

类MultipartFormDataBodyParser实现BodyParser{
名称='多部分/表单数据';
支持(mediaType:string){
//媒体类型可以是
//`多部分/表单数据;边界=------------------------------------979177593423179356726653`
返回mediaType.startsWith('multipart/formdata');
}
异步解析(请求:请求):承诺{
const storage=multer.memoryStorage();
const upload=multer({storage});
返回新承诺((解决、拒绝)=>{
upload.any()(请求,{}如有,err=>{
如果(错误)拒绝(错误);
否则{
决心({
价值:{
文件:request.files,
字段:(如有请求)。字段,
},
});
}
});
});
}
}
利用此主体解析器的示例控制器:

class文件上传控制器{
@post(“/show body”{
答复:{
//(为简洁起见省略)
},
})
异步显示体(
@请求主体({
描述:“多部分/表单数据值”,
要求:正确,
内容:{
“多部分/表单数据”:{
架构:{type:'object'},
},
},
})
{文件,字段}:任何,
) {
返回体;
}
}