Camel SFTP端点不上传文件

时间:2013-11-22 13:14:55

标签: java apache-camel sftp

我正在尝试使用camel-ftp端点(特别是sftp模块)上传新生成的CSV文件。

我的路线的相关部分如下:

...
<marshal>
    <csv></csv>
</marshal>
<to uri="file:incoming?tempPrefix=.&amp;fileName=feed.csv" />
<to uri="sftp://username@linuxserver/home/username/file.csv?password=password" />
...

注意:

中的“文件”
  

呼入/ feed.csv

创建成功,驼峰的最后几行输出读取:

[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

在linuxserver上。

注意:

当我将sftp rout配置为以下任一项时,我得到相同的结果:

<to uri="sftp://username@linuxserver/home/username/?password=password" />

<to uri="sftp://username@linuxserver/home/username?password=password" />

我错过了什么?

2 个答案:

答案 0 :(得分:1)

当存在URI的目录部分时,如:

<to uri="sftp://username@linuxserver/home/username/?password=password" />
文件放在相对于用户主目录的目录中(在这种情况下为~username / home / username) - 所以当你想直接在用户主目录中放置一个文件时,不要直接指定目录 - 使用:
<to uri="sftp://username@linuxserver?password=password" />

如果要将文件放在主目录之外,请使用双斜杠将hostname与目录分开:
<to uri="sftp://username@linuxserver//home/username/?password=password" />

使用骆驼2.10.7检查。为logger org.apache.camel.component.file.remote.SftpOperations设置跟踪以验证行为。

@ Olivier.Roger - ftps!= sftp

答案 1 :(得分:0)

应将sftp端点指定为

ftps://[username@]hostname[:port]/directoryname[?options]

因此,应在URI中指定文件名。 您可以使用CamelFileName标题选择文件名。

您可以在FTP Component documentation

中找到其他信息