文件目录无法从 apache camel 上传 azure blob 上的文件

Posted

技术标签:

【中文标题】文件目录无法从 apache camel 上传 azure blob 上的文件【英文标题】:file-dir is not working to upload a file on azure blob from apache camel 【发布时间】:2021-09-07 21:30:30 【问题描述】:

我们在 azure blob 容器中创建了一些文件夹结构,我们希望将一些文件从骆驼路由上传到这个 blob 存储。

当我们尝试指定 file-dir 参数时,它没有正确更新它,但是如果我们在 blob 名称中指定值,那么它会将文件上传到正确的文件夹中。

如果我们在 file-dir 参数中提到该文件夹​​,您能否帮我解释为什么它不起作用

不工作:

.to("azure-storage-blob://account1/container1?blobName=file1.txt& fileDir=/folder1&operation=uploadBlockBlob")

工作:

.to("azure-storage-blob://account1/container1?blobName=folder1/file1.txt&operation=uploadBlockBlob")

依赖:

<dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-azure-storage-blob-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

【问题讨论】:

你用的是什么版本的骆驼? org.apache.camel.springbootcamel-spring-boot-starter3.5.0org.apache.camel.springbootcamel-azure-storage-blob-starter3.5.0 3.10.0 或 3.11.0 即将发布时试用 感谢@ClausIbsen。我试过 3.10.0 。但是遇到同样的问题。将在 3.11.0 发布时尝试。 嗨@ClausIbsen 我刚刚尝试了3.11.0,但我仍然遇到同样的问题。只是想检查一下,如果 fileDir 选项是为此目的(用于生产者)而设计的,正如描述所说的那样,它用于存储下载的文件 【参考方案1】:

不工作,因为这条路径属于消费者方面。

.to("azure-storage-blob://account1/container1?**blobName=file1.txt& fileDir=/folder1**&operation=uploadBlockBlob")

例子:

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");

消费者示例下的上述建议参考:Azure Storage Blob Service :: Apache Camel

灵魂:

你也可以像这样从生产者端指定你的路径。

.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadPageBlob&serviceClient=#client").to("mock:result");

serviceClient(常用)

将客户端自动连接到存储帐户。此客户端不保存有关特定存储帐户的任何状态,而是向服务上的资源发送适当请求的便捷方式。它也可用于构建 blob 和容器的 URL。此客户端包含对服务帐户的操作。对容器的操作可以通过 BlobServiceClient#getBlobContainerClient(String) 在 BlobContainerClient 上进行,对 Blob 的操作可以通过 BlobContainerClient#getBlobClient(String) 在 BlobClient 上进行。

以上建议的参考在生产者操作示例下->uploadBlockBlob

Azure Storage Blob Service :: Apache Camel

【讨论】:

以上是关于文件目录无法从 apache camel 上传 azure blob 上的文件的主要内容,如果未能解决你的问题,请参考以下文章

[每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock

使用 Apache Camel Source 从 S3 到 Kafka

[每日一学]apache camel|XSLT|SAXON

[每日一学]apache camel简介

php上传文件后无法移动到指定目录的解决

Apache Camel