我正在尝试使用camel-ftp端点(特别是sftp模块)上传新生成的CSV文件。
我的路线的相关部分如下:
...
<marshal>
<csv></csv>
</marshal>
<to uri="file:incoming?tempPrefix=.&fileName=feed.csv" />
<to uri="sftp://username@linuxserver/home/username/file.csv?password=password" />
...
注意:"file"位于
incoming/feed.csv
创建成功,camel的最后几行输出为:
[DefaultQuartzScheduler-camel_Worker-1] INFO org.apache.camel.component.file.remote.SftpOperations - JSCH -> Authentication succeeded (password).
[DefaultQuartzScheduler-camel_Worker-1] INFO org.apache.camel.component.file.remote.SftpOperations - Connected to sftp://username@linuxserver:22
[DefaultQuartzScheduler-camel_Worker-1] INFO org.apache.camel.component.file.remote.RemoteFileProducer - Connected and logged in to: Endpoint[sftp://username@linuxserver/home/username/file.csv?password=xxxxxx]
但是没有
/home/username/file.csv
在 Linux 服务器上。
注意:
当我将 sftp 路由配置为以下任一内容时,会得到相同的结果:
<to uri="sftp://username@linuxserver/home/username/?password=password" />
或
<to uri="sftp://username@linuxserver/home/username?password=password" />
我错过了什么?
当 URI 的目录部分存在时,例如:
<to uri="sftp://username@linuxserver/home/username/?password=password" />
文件放置在相对于用户主目录的目录中(在本例中为 ~username/home/username) - 因此,当您想直接将文件放置在用户主目录中时,根本不指定目录 - 使用:
<pre><to uri="sftp://username@linuxserver?password=password" /></pre>
当您想将文件放置在主目录之外时,请使用双斜杠将主机名与目录分开:
<pre><to uri="sftp://username@linuxserver//home/username/?password=password" /></pre>
使用camel 2.10.7 检查。设置记录器 org.apache.camel.component.file.remote.SftpOperations 的跟踪以验证行为。
@Olivier.Roger - ftps != sftp
我是一名优秀的程序员,十分优秀!