java - Camel SFTP 端点未上传文件

标签 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" />
...

注意:"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

关于java - Camel SFTP 端点未上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20145832/

相关文章:

javascript - 使用 Node.js 和 SSH2 从 SFTP 服务器读取文件

java - 为什么我的 jsoup.connect(url) 无法使用某些 url?

java - 面临 Camel 分离器的类型转换错误

linux - 在 SFTP 时运行 Nohup

java - 使用 REST 路由的 Camel 聚合

java - ServiceMIX异常处理

java - 使用 JSch 列出 SFTP 中的前 N ​​个文件

java - 为 JTable 设置特定行的边距和自定义边框

java - 在java中设置Jasper Report的字体

java - 读取复杂的 XML Java