繁体   English   中英

在 Data Lake Gen 2 中将文件从一个容器复制到另一个容器

[英]Copy file from one container to another container in Data Lake Gen 2

想象一下,我在 Azure Data Lake gen2 的容器中有一个 blob:

容器:test1 目录:TextFiles 文件:example.txt

我想用与test2容器完全相同的路径从test1容器中复制example.txt

容器:test2 目录:TextFiles 文件:example.txt

我怎么能在 c# 中做到这一点?

要使用 Azure Function 实现此目的,您将需要创建一个 function 运行一个 BlobTrigger 监听Test1容器。 您可以创建第二个 Blob 绑定到 output 容器并简单地处理它们。

function 代码看起来像这样。

public static async Task CopyTextFiles(
    [BlobTrigger("TextFiles/{name}.{extension}", Connection = "Container1ConnectionString")] CloudBlockBlob inputFile, string name, string extension, ILogger log,
    [Blob("TextFiles/{name}.{extension}", FileAccess.Write, Connection = "Container2ConnectionString")] CloudBlockBlob outputFile)
{
    var inputFileStream = new MemoryStream();
    await inputFile.DownloadToStreamAsync(inputFileStream);
    inputFileStream.Seek(0, SeekOrigin.Begin);

    await outputFile.UploadFromStreamAsync(inputFileStream);
    
    //I'd recommend looking at StartCopyAsync() method as this is probably what you need.
    //Personally I have never used it.
}

绑定的连接属性位于local.settings.json文件中,可以从存储帐户的“访问密钥”部分中的 Azure 门户获取。

它应该看起来与此类似

DefaultEndpointsProtocol=https;AccountName=STORAGE-ACCOUNT-NAME;AccountKey=SOME-ACCOUNT-KEY;EndpointSuffix=core.windows.net

但是我相信在 Visual Studio 中,当您从模板创建 Blob 触发器 Azure Function 时,您可以在 Visual Studio 中进行配置。

希望这会有所帮助,有任何问题请告诉我!

您还可以从文档中找到有关触发器和绑定以及可以使用的不同类型的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM