我正在尝试使用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" />
...
注意:
中的“文件”呼入/ 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" />
我错过了什么?
答案 0 :(得分:1)
当存在URI的目录部分时,如:
<to uri="sftp://username@linuxserver/home/username/?password=password" />
文件放在相对于用户主目录的目录中(在这种情况下为~username / home / username) - 所以当你想直接在用户主目录中放置一个文件时,不要直接指定目录 - 使用:
<to uri="sftp://username@linuxserver?password=password" />
<to uri="sftp://username@linuxserver//home/username/?password=password" />
@ Olivier.Roger - ftps!= sftp
答案 1 :(得分:0)
应将sftp端点指定为
ftps://[username@]hostname[:port]/directoryname[?options]
因此,应在URI中指定文件名。
您可以使用CamelFileName
标题选择文件名。