标签: azure-blob-storage

C# Azure AppendBlob AppendBlock 添加大于 4mb 限制的文件

我搜索了又搜索,但没有找到任何例子。

我在 C# .NET Core 中使用 Azure.Storage.Blobs nuget 包。

这是我当前代码不起作用的示例。

我收到状态:413(请求正文太大,超出了最大允许限制。)

搜索似乎表明有 4mb 限制或 100mb 限制,尚不清楚,但我认为追加 Blob 上有 4mb 限制,块 Blob 上有 100mb 限制。

var appendBlobClient = containerClient.GetAppendBlobClient(string.Format("{0}/{1}", tenantName, Path.GetFileName(filePath)));

using FileStream uploadFileStream = File.OpenRead(filePath);
appendBlobClient.CreateIfNotExists();
appendBlobClient.AppendBlock(uploadFileStream);
uploadFileStream.Close();
Run Code Online (Sandbox Code Playgroud)

由于 4mb 的限制,这不起作用,因此我需要附加 4mb 的文件块,但我还没有找到执行此操作的最佳方法的示例。

所以我想找出的是上传大文件的最佳方法,它似乎必须分块完成,对于附加 blob 可能是 4mb,对于块 blob 可能是 100mb,但文档不清楚,也没有示例。

c# azure .net-core azure-blob-storage

5
推荐指数
1
解决办法
5638
查看次数

Azure Blob 存储 V12 - 使用专用类 BlockBlobStorage 的示例

我很难使用新版本的.NET Azure 存储 Blob 客户端库

我需要的是创建可以写入数据的流,比方说,在流达到 4MB 大小后,我需要上传它。我找到了BlockBlobClient。有两种方法 CommitBlockListAsync 和 StageBlockAsync。这个方法看起来像我需要的,但我找不到一些使用示例。

您知道与我的需求类似的场景吗?或者有人可以帮助我了解这位客户吗?

我需要这样的东西,每4MB阶段,清除流并继续写入:

public class MyStreamWrapper : Stream
{
    readonly BlockBlobClient _blockBlobClient;
    readonly Stream _wrappedStream;
    bool _isCommited;
    readonly List<string> _blockIds;

    public MyStreamWrapper (BlockBlobClient blockBlobClient)
    {
        _wrappedStream = new MemoryStream();
        _blockBlobClient = blockBlobClient;
        _isCommited = false;
        _blockIds = new List<string>();
    }

    public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
    {
        if ((_wrappedStream.Length + buffer.Length) / 1024 > 4) // check size if 
        { …
Run Code Online (Sandbox Code Playgroud)

c# azure-blob-storage

5
推荐指数
1
解决办法
4371
查看次数

扫描上传到 Azure 的文件中的恶意软件

我正在构建一个具有文件上传功能的 .net 应用程序(Azure 应用程序服务),该功能会将 pdf/docx 文件上传到 Azure blob 存储。

我只是想知道如果恶意用户上传了受病毒感染的文件、word 文件中的错误宏,Azure 是否能够扫描并删除/隔离该文件?

在应用程序中,管理员用户将能够使用 URL 下载文件。该文件没有病毒吗?或者,在管理员下载文件后,我是否需要显式调用 Symantec End Point 等防病毒软件。

请让我知道您的专家想法。

azure azure-blob-storage

5
推荐指数
1
解决办法
1万
查看次数

How to get only folder name in blob using new Azure.Storage.Blobs namespace

快照

I want to get all the folder name under a container using new SDK - Azure.Storage.Blobs

c# azure azure-blob-storage

5
推荐指数
1
解决办法
5344
查看次数

如何对 Azure Blob 存储的 fsspec 进行身份验证

从 django REST API 视图中,我尝试访问存储在 azure 存储 blob 中的文件。我想打开它而不将其下载到文件中,如此处所示。读取访问权限就足够了。

为此,我这样勾勒出我的观点:

import os
from fsspec.implementations.http import HTTPFileSystem

@api_view()
def my_view(request):
    url = "https://storageaccount.blob.core.windows.net/container/"
    filename = "file.f"
    fs = HTTPFileSystem(
        container_name=os.environ["AZURE_STORAGE_CONTAINER"],
        storage_options={
            "account_name": os.environ["AZURE_STORAGE_ACCOUNT"],
            "account_key": os.environ["AZURE_STORAGE_KEY"],
        },
    )
    with fs.open(url + filename, "r") as fobj:
        ds = somehow.open_dataset(fobj)

    return Response({"message": "Data manipulated"}, status=200)
Run Code Online (Sandbox Code Playgroud)

这会给出 FileNotFoundError。

我的问题是:

  • 使用天蓝色的 blob 存储是否可以实现这一点?如果不是,最接近的是什么?
  • 我如何验证 HTTPFileSystem?我觉得我或多或少地编造了这些关键字,但无法找到任何有关它的信息......

filesystems django azure django-rest-framework azure-blob-storage

5
推荐指数
1
解决办法
1072
查看次数

用于存储静态网站子目录的 Azure CDN 高级 Verizon 规则引擎 V4 URL 重写

我正在尝试主持一个Angular项目Azure Storage Static Website Azure CDN Verizon Premium

假设我为每个Angular构建都有名为类似的容器v0.3.13.3,并且在该容器中还有角度项目的多语言构建。

我想要实现的是index.html为每个版本和语言提供正确的路由。

您可能会在下面找到示例路线:

my.domain.com/v0.3.13.3应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/dashboard应该服务/v0.3.13.3/index.html
my.domain.com/v0.3.13.3/fr应该服务/v0.3.13.3/fr/index.html
my.domain.com/v0.3.13.3/fr/dashboard应该服务/v0.3.13.3/fr/index.html

我已经成功地做到了,Azure Standard Rules Engine 如下面的屏幕截图所示。

在此输入图像描述

但据我从文档中看到,在标准规则引擎Contains字段中不能用正则表达式填充。我已经在谷歌上进行了挖掘,但似乎找不到任何适合我的解决方案。

因此,我已将 CDN 服务切换为 Verizon Premium 并尝试应用于(v(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+))路径正则表达式。

我在使用 Verizon Premium 时遇到的主要问题是,只有URL Rewrite在我将 IF 字段声明为Always

在此输入图像描述

如您所见,URL Rewrite未列出。

我还使用声明进行了几次部署Always ,但没有任何好处。

每个人在博客中分享的唯一示例

在此输入图像描述

所以上面的例子不包括文件扩展名和子路由。

有什么方法可以实现我的目标吗?

提前致谢。

azure-cdn azure-blob-storage verizon

5
推荐指数
1
解决办法
2125
查看次数

使用 .NET SDK 12 从 Azure Blob 存储中的特定目录/文件夹获取文件

我需要列出“Test”文件夹中特定目录中的所有文件,不包括“Test2”。我尝试使用“test”作为前缀,但它返回两个文件夹。

容器:“myContainer”

测试:

  • 文件1.jpg
  • 文件2.jpg

测试2:

  • 文件1.jpg

我尝试了以下操作,但它返回带有输出的文件夹和路径:

  • 测试/file1.jpg
  • 测试/file2.jpg
  • 测试2/文件1.jpg

我可以只返回文件而不是路径吗?

  • 文件1.jpg

  • 文件2.jpg

         var blobUri = new Uri($"https://{myAccountName}.blob.core.windows.net/");
         StorageSharedKeyCredential credential = new StorageSharedKeyCredential(myAccountName, myKey);
         BlobServiceClient service = new BlobServiceClient(blobUri, credential);
         BlobContainerClient container = service.GetBlobContainerClient("myContainer");
         AsyncPageable<BlobItem> blobs = container.GetBlobsAsync(prefix: "test");
    
         List<Result> results = new List<Result>();
         await foreach (var blob in blobs)
         {
             var result = new Result();
             result.FileName = blob.Name;
             results.Add(result);
         }
    
    Run Code Online (Sandbox Code Playgroud)

.net azure azure-blob-storage

5
推荐指数
1
解决办法
1万
查看次数

公开 Blob 存储并上传到其中

尝试使用curl命令上传到blob存储

curl --upload-file <file> --url "https://<storage-account-name>.blob.core.windows.net/<container-name>/<file>"
Run Code Online (Sandbox Code Playgroud)

但不断收到“HTTP/1.1 404 指定的资源不存在”。我将存储和容器都公开,容器的访问级别设置为“容器”,不知道还可以尝试什么。我错过了什么吗?

azure azure-blob-storage

5
推荐指数
1
解决办法
4724
查看次数

如何集成测试Azure Blob存储?

我正在开发一个企业业务项目,需要将应用程序从本地迁移到 Azure 云。

某些应用程序需要 Azure Blob 存储。所有 Azure 云基础设施都可以使用 Manage Identity 进行访问,业务要求是在无法访问 Azure 门户的情况下测试和验证 Azure Blob 方法,开发人员只能访问任何非生产或生产的存储资源。也就是说,该公司要求我们在将代码推送到云之前通过在本地和 GitHub 工作流程上进行测试来使所有存储功能正常工作。

当然,我可以启动我的个人 Azure 帐户并使用它,但仍然会使用我的帐户作为游乐场进行测试,但并不是真正可用的测试。

通用测试 Azure Blob 存储的整个想法,无需对 Blob 存储有任何类型的访问权限。

这可能吗?我怎样才能实现这一目标?

以下是我针对 Azure Blob 的工作 POC 方法:

private readonly BlobContainerClient _blobContainerClient;

public AzureBlobStorage(string connectionString, string container)
{
    _blobContainerClient = new BlobContainerClient(connectionString, container);
    _blobContainerClient.CreateIfNotExists();
}

public async Task<string> ReadTextFile(string filename)
{
    var blob = _blobContainerClient.GetBlobClient(filename);
    if (!await _blobContainerClient.ExistsAsync()) return string.Empty;
    var reading = await blob.DownloadStreamingAsync();
    StreamReader reader = new StreamReader(reading.Value.Content);
    return await reader.ReadToEndAsync(); …
Run Code Online (Sandbox Code Playgroud)

.net c# azure azure-blob-storage

5
推荐指数
1
解决办法
3974
查看次数

如何验证 Azure Blob 存储共享访问签名 (SAS) URL?

我的应用程序允许用户输入 Azure Blob 存储 SAS URL。我将如何去验证它?我正在使用Azure 存储 Blob 客户端库,并且似乎没有任何方法可以在不实际执行 Blob 操作(我不想这样做)的情况下验证 SAS URL。

验证操作可以是异步的,并在必要时涉及 API 调用(即可以通过按钮触发)。

public class SASURLValidator
{
    public async Task<bool> ValidateSASURL(string sasURL)
    {
        // What goes here?
    }

    public async Task Test()
    {
        var result = await ValidateSASURL("https://blobstorageaccountname.blob.core.windows.net/containerName?sp=w&st=2022-02-15T02:07:49Z&se=2022-03-15T10:07:49Z&spr=https&sv=2020-08-04&sr=c&sig=JDFJEF342JDSFJIERJsdjfkajiwSKDFJIQWJIFJSKDFJWE%3D")
        // result should be true if the above is a valid SAS
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# azure-storage azure-blob-storage shared-access-signatures

5
推荐指数
1
解决办法
3293
查看次数