如何通过`tx.get`从REST服务中加载png 相当于`fs.readFile`

2020-08-18 00:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在我简单的CAP应用程序中,我想...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我简单的CAP应用程序中,我想从第三方REST服务加载PNG文件并将其流式传输到FE应用程序。

这不应该涉及数据库。

应用程序中的最终要求是从第三方服务加载并显示动态生成的一次性qrcode。

这是我的代码示例。 请注意" image-service.js"文件,在该文件中,我有一个测试实现,可以从文件系统中读取png,这是工作示例。 无法从第三方REST服务加载png的目标行为。

我需要如何更改代码才能使其正常工作?

#srv/image-service.cds

 使用" ../db/data-model"中的{Media};
 服务流{
     实体图像作为在媒体上的投影;
 } 
#db/data-model.cds

 实体媒体{
     密钥ID:整数;
     @ Core.MediaType:mediaType内容:LargeBinary;
     @ Core.IsMediaType:true mediaType:字符串;
 } 
#package.json

 " cds":{
     "要求":{
       "媒体":{
         " kind":"休息",
         "凭据":{
           " url":" https://upload.wikimedia.org/"
         }
       }
 ... 
#srv/image-service.js

 const fs = require(" fs")。promises
 const {Readable} = require(" stream")
 module.exports =(srv)=> {
     srv.on(" READ"," Image",async(req)=> {
         const srv = cds.connect.to(" media");
         const tx = srv.transaction(req);

        //#1-不起作用的示例-从Web服务加载png的变体
        //这是目标行为
         const pngBuffer等待tx.get(`/wikipedia/commons/d/d9/Test.png`);

        //#2-工作示例-从文件系统加载
         const pngBuffer =等待fs.readFile(`$ {__ dirname}/Test.png`);

         const visibleStream = new Readable();
         const result = new Array();
         visibleStream.push(pngBuffer);
         可读Stream.push(null);
         result.push({value:可读Stream});
         返回结果;
     })
 }
 

谢谢

2条回答
半个程序猿
2020-08-18 00:27

多米尼克,你好

尚不支持从外部服务流式传输。

您可以尝试像当前使用tx.get一样读取数据,然后在自定义处理程序中将字符串转换为Buffer。

最诚挚的问候,

Johannes

一周热门 更多>