我尝试使用当前文件名设置标题“CamelAwsS3Key”,然后将文件上传到Amazon S3,但我无法获取当前文件名,这里是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 ]
但标题未设置...来自日志:
Exchange[
...
Headers{... CamelAwsS3Key=null, CamelFileName=null, CamelFileNameProduced=D:\camel_out\foo_20150622124308.xml ...}
...
]
如果我使用常量(文件被上传),它可以工作,如:
<setHeader headerName="CamelAwsS3Key">
<constant>test</constant>
</setHeader>
如何使用当前文件名设置标头?
谢谢!
答案 0 :(得分:1)
简单<simple>${file:onlyname}</simple>
仅在您从文件端点使用时,例如从文件。
文件生成器(例如,文件)只有一个标题,即生成文件名:
这也是您可以从日志中看到的内容。如果只需要,则需要编写一些代码来仅提取名为generated的文件的名称部分,因为名称当前包含路径。虽然我们可以在camel文件生成器中引入一个FILE_ONLYNAME_PRODUCED标头。
上记录此类ENH请求