【问题标题】:Ftp Receive Location Minimum size ControlFtp 接收位置最小尺寸控制
【发布时间】:2024-04-29 16:35:02
【问题描述】:

我有一个 BizTalk FTP 接收位置。有时面临零字节大小文件的问题。当我们说我们的合作伙伴向我们发送空文件时,他们不接受这一点。作为一种解决方案,我们希望在我们的 FTP 接收位置添加一个过滤器,以检查文件大小是否大于零。如果文件大小大于零,我想获取文件。

【问题讨论】:

    标签: file ftp biztalk biztalk-2010


    【解决方案1】:

    解决此问题的一种方法是创建自定义管道组件。

    这个组件会检查流的长度。如果流是空的(长度为 0),或者如果您收到一个空文件,您会考虑期望的任何内容,您可以为消息返回 null

    这样,您的消息将被丢弃在您的组件中(在您的管道内),而不会在接收和处理非空文件时产生任何影响。

    【讨论】:

    • 谢谢彼得。我只是想知道 Ftp 适配器是否有这样的属性。根据我的搜索,没有这样的属性。正如您所建议的,编写管道是唯一的应用方式。
    • 胡尤努斯,你可以检查一下(Body)流的长度来判断你的消息是否为空。
    • @yunus 我写了一个管道来做类似的事情。然而,在我们的例子中,他们希望发送一个只是根的 XML 消息。因此,当主体为空时,我的管道组件实际上创建了一个有效负载。注意:如果您可以改用文件适配器,则会自动删除 0 字节文件,因此不需要自定义管道。
    【解决方案2】:

    您的 FTP 可能在文件完全写入之前就已获取文件,您需要做的是让正在写入文件的进程使用临时文件名或文件夹并执行重命名或移动后已经写完了。

    如果他们真的在写零字节文件,那么根据 Pieter 的回答使用自定义管道组件,或者如果 FTP 位置是本地的,则将其变为文件共享并更改为文件适配器,该适配器会自动丢弃零字节文件。

    【讨论】: