【问题标题】:how to create a sub folder in azure storage account and copy the files by using azure function App如何在 azure 存储帐户中创建子文件夹并使用 azure function App 复制文件
【发布时间】:2021-01-03 02:09:27
【问题描述】:
我的存储帐户中有两个文件夹 源文件夹和目标文件夹 我想在我的源文件夹中添加 Demo 文件夹,我想将我的源文件夹文件复制到 Demo 文件夹并在复制到存档文件夹后删除我的所有源文件夹文件
- 如何在另一个文件夹中创建文件夹
- 如何将文件从一个文件夹复制到另一个文件夹
如何添加我通过这种方式传递的文件夹:
var directory2 = container.GetDirectoryReference("csvfile / Source Folder / Archieve Folder");
CloudBlockBlob blockBlob2 = directory2.GetBlockBlobReference("empchange1.csv");
- 容器名-csv文件
- 文件夹-来源
- 子文件夹存档
【问题讨论】:
标签:
azure
azure-functions
azure-function-app
azure-functions-runtime
azure-function-async
【解决方案1】:
Azure Blob 存储中没有(物理)文件夹之类的东西。只有虚拟文件夹的概念。通过在名称中使用/,您将创建一个虚拟文件夹。例如,名为 virtualfolder/myblob.ext 的 blob 被放置在名为 virtualfolder 的虚拟文件夹中。
如果您想创建一个虚拟子文件夹,只需将名称放在 blob 中并使用“/”作为分隔符,如下所示:
virtualfolder/subfolder/myblob.ext
如果您查看the docs for cloudblobdirectory,也会提到虚拟文件夹的概念
表示 虚拟 blob 目录,由分隔符指定。
也就是说,将 blob 移动到不同的文件夹因此与将 blob 重命名为相同,例如 otherfolder/myblob.ext。不幸的是,没有允许您重命名 blob 的 API。解决方案是下载 blob 内容并使用不同的名称上传。
【解决方案2】:
这是一个将 blob 从一个容器移动到另一个容器的示例。请注意这是一个两步过程,并注意 bindings 使此声明性和易于理解。我正在移动一个 blob 从 in 到 out:
using BlobMover.Models;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.IO;
using System.Threading.Tasks;
namespace BlobMover
{
public static class BlobMover
{
[StorageAccount("Connection")]
[FunctionName("BlobMover")]
public static async Task Run(
[QueueTrigger("%BlobMover:TriggerQueue%")] BlobMessage msg,
[Blob("{source}-error/{name}", FileAccess.Write)] CloudBlockBlob error,
[Blob("{destination}/{name}", FileAccess.Write)] CloudBlockBlob @out,
[Blob("{source}/{name}", FileAccess.Read)] CloudBlockBlob @in,
ILogger log)
{
var trackingId = Guid.NewGuid();
await @out.StartCopyAsync(@in);
await @in.DeleteAsync();
}
}
}