使用 Camel 设置一些 header 为当前文件名
Setting some header with current file name with Camel
我试图在将文件上传到 Amazon S3 之前使用当前文件名设置 header、"CamelAwsS3Key",但我无法获取当前文件名,此处是 Spring 片段:
...
<to uri="file:D:/camel_out?fileName=foo_$simple{date:now:yyyyMMddHHmmss}.xml" />
<setHeader headerName="CamelAwsS3Key">
<simple>${file:onlyname}</simple>
</setHeader>
<to uri="aws-s3://bucket?accessKey=xxx&secretKey=yyy" />
这是消息历史记录(我删除了无用的列):
...
[to2 ] [file:D:/camel_out?fileName=foo_$simple{date:now:yyyyMMddHHmmss}.xml]
[setHeader1] [setHeader[CamelAwsS3Key] ]
[to3 ] [aws-s3://bucket?accessKey=xxx&secretKey=xxxxxx ]
但是 header 没有设置...来自日志:
Exchange[
...
Headers{... CamelAwsS3Key=null, CamelFileName=null, CamelFileNameProduced=D:\camel_out\foo_20150622124308.xml ...}
...
]
如果我改用常量(文件已上传),它会起作用,例如:
<setHeader headerName="CamelAwsS3Key">
<constant>test</constant>
</setHeader>
如何设置一个header为当前文件名?
谢谢!
简单的 <simple>${file:onlyname}</simple>
仅当您从文件端点消费时,例如从文件。
To file producer(eg to file)只有一个header是produced的文件名:
这也是您可以从日志中看到的内容。如果您只需要,您将需要编写一些代码来仅提取名为 produced 的文件的名称部分,因为该名称当前包含路径。尽管我们可以在 camel 文件生成器中引入 FILE_ONLYNAME_PRODUCED header。
欢迎您在以下位置记录此类 ENH 请求:http://camel.apache.org/support
我试图在将文件上传到 Amazon S3 之前使用当前文件名设置 header、"CamelAwsS3Key",但我无法获取当前文件名,此处是 Spring 片段:
...
<to uri="file:D:/camel_out?fileName=foo_$simple{date:now:yyyyMMddHHmmss}.xml" />
<setHeader headerName="CamelAwsS3Key">
<simple>${file:onlyname}</simple>
</setHeader>
<to uri="aws-s3://bucket?accessKey=xxx&secretKey=yyy" />
这是消息历史记录(我删除了无用的列):
...
[to2 ] [file:D:/camel_out?fileName=foo_$simple{date:now:yyyyMMddHHmmss}.xml]
[setHeader1] [setHeader[CamelAwsS3Key] ]
[to3 ] [aws-s3://bucket?accessKey=xxx&secretKey=xxxxxx ]
但是 header 没有设置...来自日志:
Exchange[
...
Headers{... CamelAwsS3Key=null, CamelFileName=null, CamelFileNameProduced=D:\camel_out\foo_20150622124308.xml ...}
...
]
如果我改用常量(文件已上传),它会起作用,例如:
<setHeader headerName="CamelAwsS3Key">
<constant>test</constant>
</setHeader>
如何设置一个header为当前文件名?
谢谢!
简单的 <simple>${file:onlyname}</simple>
仅当您从文件端点消费时,例如从文件。
To file producer(eg to file)只有一个header是produced的文件名:
这也是您可以从日志中看到的内容。如果您只需要,您将需要编写一些代码来仅提取名为 produced 的文件的名称部分,因为该名称当前包含路径。尽管我们可以在 camel 文件生成器中引入 FILE_ONLYNAME_PRODUCED header。
欢迎您在以下位置记录此类 ENH 请求:http://camel.apache.org/support