如何解决如何处理s3对象名称中的Plus+符号?
我是骆驼路线的新手,并且坚持用例,我必须将文件上传到s3,该文件的名称中将包含加号symbol(+),对此我们无能为力。我尝试使用谷歌搜索来解决此问题,但未找到任何解决方案,我发现我必须对我的s3 url进行编码,该URL可以处理plus(+)符号,但无法获取方法? 还经历了FineUploader with S3 how to specify object name on S3,https://github.com/aws/aws-sdk-java/issues/1946,AWS: how to fix S3 event replacing space with '+' sign in object key names in json之类的解决方案,但我没有从所有这些中找到提示。
这里是示例-
from("ftp-file-location").toD("S3-location/file+name.xml")
问题是,如果我以相同的方式使用它,则会出现如下异常情况
2020-08-28 22:59:27.943 WARN 14268 --- [sVpiIngestRoute] o.a.camel.component.seda.SedaConsumer : Error processing exchange. Exchange[]. Caused by: [com.amazonaws.services.s3.model.AmazonS3Exception - The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: C4CE2CAE8988D1C0; S3 Extended Request ID: aLzhh+0HZDCYjQrask2AqkwvaIckpAwj1ZXW1QCOZNPb02QJA9pruje+6BhgwJDATizyZqDYbvA=)]
com.amazonaws.services.s3.model.AmazonS3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: C4CE2CAE8988D1C0; S3 Extended Request ID: aLzhh+0HZDCYjQrask2AqkwvaIckpAwj1ZXW1QCOZNPb02QJA9pruje+6BhgwJDATizyZqDYbvA=)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1640)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1058)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4365)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4312)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1755)
at org.apache.camel.component.aws.s3.S3Producer.processSingleOp(S3Producer.java:281)
at org.apache.camel.component.aws.s3.S3Producer.process(S3Producer.java:90)
at org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:67)
at org.apache.camel.processor.SendDynamicProcessor.lambda$process$0(SendDynamicProcessor.java:166)
at org.apache.camel.impl.engine.DefaultProducerCache.doInAsyncProducer(DefaultProducerCache.java:298)
at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:151)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryState.run(RedeliveryErrorHandler.java:476)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:185)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:87)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:228)
at org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:266)
at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:180)
at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:125)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
但是,如果我从文件名中删除加号(+),效果很好。
您能帮我吗??? 预先感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。