从SFTP解压缩文件,并需要使用.txt扩展名发送相同的文件名

2020-09-13 14:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有一个要求:在S...

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

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


嗨,

我有一个要求:在SFTP服务器中,我有3个目录,带有3个文件名:

目录1:Bank_Server01_001 * .zip(zip包含10或20个txt文件)

目录2:Bank1_server02_002 * .zip(zip包含10或20个txt文件)

目录3:Bank2_server03_003 * .zip(zip包含10或20个txt文件)

我需要从这些目录中选择文件并解压缩文件,为此,我使用了Java映射来实现此要求。

我拿了一个Zip文件和(三个测试文件)。

Ramu.zip(ramu1.txt,ramu2.txt,ramu3.txt)使用下面的映射,我可以解压缩并读取文件,但是在放置文件时,我得到一个包含所有内容的文件(ramu2.txt作为输出文件) )

代码:

导入com.sap.aii.mapping.api。*; 公共类unzipFiles扩展AbstractTransformation { java.io.OutputStream outputstream = TransformationOutput.getOutputPayload()。getOutputStream(); zis = new java.util.zip.ZipInputStream(inputstream); java.util.zip.ZipEntry ze; while((ze = zis.getNextEntry())!= null){int len; 字节b [] =新字节[2048]; while((len = zis.read(b,0,2048))!= -1){outputstream.write(b,0,len);复制代码 } java.util.Map mapParameters = TransformationInput.getInputHeader()。getAll(); mapParameters.put(DynamicConfigurationKey.create(" http://sap.com/xi/XI/Dynamic ",StreamTransformationConstants.DYNAMIC_CONFIGURATION),""); DynamicConfiguration conf =(DynamicConfiguration)mapParameters.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); conf.put(DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File "," FileName"),ze.getName()); }} catch(Exception exception){getTrace()。addDebugMessage(exception.getMessage()); 抛出新的StreamTransformationException(exception.toString()); }}}

这是我的问题,我需要在两个通道(发送方和接收方)中使用相同的文件名(即使使用了ASMA选项)也要发送到目标系统,但文件仍未到达接收方目录中?

6条回答
SC_Yao
2020-09-13 15:06

嗨Ramanjaneya!

我建议请求将FTP接收器更改为SFTP。 如果不可能,我会看到两个可能的解决方法:

1。 编写一个自定义适配器模块以解压缩有效负载并将每个文件作为单独的消息发送。

2。 使用多重映射。 在这种情况下,您可以尝试将每个文件内容放在单独消息的XML元素内,并在接收方FTP通道使用FCC将其转换为文本文件。 或者,您可以对文件内容使用BASE64编码,将每个文件的结果字符串和文件名放入多消息结构的单独XML消息中,并使用带有Java或XSLT映射的SOAP环回将BASE64编码的字符串转换回文本格式并将结果保存到 FTP适配器下载文件。

关于,叶夫根尼。

一周热门 更多>