在加载所有数据之前,向使用者请求Stream的大小

时间:2018-11-21 09:30:48

标签: apache-camel

大家好,
我正在开发的骆驼组件有问题,我不确定该如何以某种方式实现它,这与骆驼的概念不谋而合。

我正在开发的生产者与我们服务器的http api进行对话,该服务器用于发送带有附件的消息。
这些附件可能很大,这就是为什么服务器期望在完成任何上传之前文件总大小的原因。

目前,生产者仅接受io.Files,nio.Paths和GenericFile,因为在上传文件之前,我可以读取文件大小。
当然,这不是一种好方法,因为它要求(大)文件在本地可用。
例如,连接一个ftp服务器作为使用者,这意味着我必须在本地下载每个文件,以便以后可以上传它。

显而易见的解决方案是使用流来访问和上传数据,但是由于这个原因,我不知道文件有多大,在我完成上传之前(这不是一种选择),我需要事先确定大小。 / p>

我现在的问题是,通过骆驼流式传输文件并让消费者提前给我文件大小的最佳实践是什么。

问候 克里斯

1 个答案:

答案 0 :(得分:0)

对于文件/ FTP使用者,交换头中的密钥具有CamelFileLength键(Exchange.FILE_LENGTH),该键从使用者的扫描结果返回远程ftp服务器中的文件大小。

与从本地获取的文件大小不同,键CamelFileLength中的文件大小可能与应用程序收到的实际文件大小不同

  1. 当操作系统不同时,ASCII模式可能会改变换行符
  2. 使用者扫描操作和使用者选择操作之间的文件大小可能会改变