可以使用payloadzip bean来解压缩多个文件

2020-09-29 22:58发布

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

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


专家们,

我们需要解压缩多个文件并将这些文件放置到目标目录中。

我们可以使用payloadzip bean实现相同的目的吗?

我可以看到一些与同一问题相关的线程,这表明不可能使用payloadzip bean解压缩多个文件。 但是那些线程很旧。

有人可以告诉我最新版本的SAP PI中是否有任何选项可以使用payloadzip bean解压缩多个文件?

我知道使用Shell脚本和Java映射可以达到相同的要求。 但是这些是我想使用的最后一个选择。

谢谢。

尼采什

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

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


专家们,

我们需要解压缩多个文件并将这些文件放置到目标目录中。

我们可以使用payloadzip bean实现相同的目的吗?

我可以看到一些与同一问题相关的线程,这表明不可能使用payloadzip bean解压缩多个文件。 但是那些线程很旧。

有人可以告诉我最新版本的SAP PI中是否有任何选项可以使用payloadzip bean解压缩多个文件?

我知道使用Shell脚本和Java映射可以达到相同的要求。 但是这些是我想使用的最后一个选择。

谢谢。

尼采什

付费偷看设置
发送
1条回答
歪着头看世界
1楼-- · 2020-09-29 23:45

嗨,Nitheesh!

这是PayloadZipBean的代码片段:

否则,如果(zipmode.equals(" unzip")) {
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,"解压缩");
BinaryBufferInputStream binin = new BinaryBufferInputStream(pldbin);
ZipInputStream zin = new ZipInputStream(binin);
byte [] tmpbuf =新的byte ['?'];
向量箱= new Vector();
ZipEntry项;
while((entry = zin.getNextEntry())!= null ){
如果(!entry.isDirectory()) {
字符串文件名= entry.getName();
BinaryBufferOutputStream binout =新的BinaryBufferOutputStream();
for(;;) {
int c = zin.read(tmpbuf,0,tmpbuf.length);
if(c <0){
break;
}
binout.write(tmpbuf,0, c);
}
bins.add(文件名);
bins.add(binout.toBinary());
}
}
zin.close();
如果(bins.size()> 0) {
字符串文件名=(String)bins.get(0);
setPayload(pld,(二进制)bins.get(1),generateContentType(文件名),文件名);
字符串zipStatus =" Zip :未压缩的有效负载";
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,zipStatus);
Audit.addAuditLogEntry(auditkey,AuditLogStatus.SUCCESS,zipStatus);
如果(垃圾箱) .size()> = 2){
int count = 0;
for(int i = 2; i 字符串ifilename =(String)bins.get(i);
XMBPayload ipld = XMBMessageOperator.createPayload();
ipld.setPayloadDescription(ifilename);
ipld.setPayloadType(PayloadType.APPLICATION_ATTACHMENT) ;
setPayload(ipld,(Binary)bins.get(i +1),generateContentType(ifilename),ifilename);
XMBMessageOperator.addPayload(mo,ipld); count ++;
}
zipStatus ="邮编:解压缩其他" + count +"有效负载";
TRACE.infoT(" process(ModuleContext,ModuleData)",ModuleCategories.SAP_MODULE_ROOT,zipStatus);
Audit.addAuditLogEntry(auditkey,AuditLogStatus.SUCCESS,zipStatus);
}
}
}

从此代码中可以看到,它为每个其他附件创建附件 提取文件。

我没有尝试使用PayloadZipBean提取多个文件,但是您可以自己尝试。

关于此,Evgeniy。

一周热门 更多>