标签: azure-blob-storage

更新 Azure Blob 上的 LastModified

我正在移植代码以使用 C# 中的 Azure 存储 SDK。

传统上,我称其为更新修改文件的上次写入/修改时间:

File.SetLastWriteTimeUtc(fileName, lastWriteTimeUtc);
Run Code Online (Sandbox Code Playgroud)

要更新 blob 的上次修改时间,我正在尝试执行类似的操作,但不能,因为 LastModified 不可访问:

CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
blob.Properties.LastModified = lastWriteTimeUtc;
blob.SetProperties();
Run Code Online (Sandbox Code Playgroud)

编译器错误:

无法分配属性或索引器“Microsoft.WindowsAzure.Storage.Blob.BlobProperties.LastModified”——它是只读的

如何更新 LastModified 属性?它不会总是更新到当前时间,所以我不能只是重新上传/触摸文件。

c# azure azure-storage azure-blob-storage

4
推荐指数
1
解决办法
6969
查看次数

Azure - 一个“块 blob”是否被视为一个文件?

问题背景:

这可能是一个简单的问题,但我找不到答案。我刚刚开始使用 Azure 存储(用于存储图像),想知道一个“blob”是否最多可容纳一个文件?

这是我的容器,名为fmfcpics

在此输入图像描述

在容器内,我有一个名为的块 blob myBlob,其中有一个图像:

在此输入图像描述

通过以下代码,如果我将另一个图像文件上传到,myBlob block blob那么它会覆盖那里已有的图像:

 CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");


        using (var fileStream = System.IO.File.OpenRead(@"C:\Users\Me\Pictures\Image1.jpg"))
        {
            blockBlob.UploadFromStream(fileStream);
        }
Run Code Online (Sandbox Code Playgroud)

这种覆盖是否正确?或者我应该能够在 存储多个文件myBlob

azure azure-storage azure-blob-storage

4
推荐指数
1
解决办法
1280
查看次数

是否可以为 azure blob 存储中的给定目录生成具有写入权限的 SAS(共享访问签名)

我们的 Blob 存储帐户结构:

\n\n

容器名称:简单

\n\n

在这个容器内我们有 blob:

\n\n
aa/one.zip\naa/two.zip\nbb/ss.zip\nbb/dd.zip\n
Run Code Online (Sandbox Code Playgroud)\n\n

是否可以生成对 aa \xe2\x80\x9cdirectory\xe2\x80\x9d 有写权限的 SAS,但对 bb \xe2\x80\x9cdirectory\xe2\x80\x9d 无访问权限?

\n\n

使用 Amazon AWS,我们可以轻松创建基于对象/blob 前缀名称的限制,但我在用于 java 的 azure storage sdk 中找不到类似的功能。

\n

java azure azure-blob-storage azure-storage-account

4
推荐指数
1
解决办法
2744
查看次数

如何删除 Azure BLOB 存储中的所有文件

背景:\n我有一个系统,它与保存文件元数据的数据库和保存文件的 Azure Blob 存储一起使用。数据库和 Azure Blob 存储通过 Web 服务协同工作。

\n\n

为了检查系统的所有部分是否正常工作,我为下载、上传和删除文件的 Web 服务创建了单元测试。经过测试,数据库和Azure Blob存储保留了大量数据,我需要将它们全部删除。我有一个脚本可以从数据库中删除所有数据(删除一个 sql 语句中的所有表、存储过程、触发器、约束和所有依赖项)。

\n\n

现在我需要编写 sctipt(power shell)或代码(C#)来从 Azure Blob 存储中删除所有文件,但我不删除容器,只删除容器中的文件。

\n\n

我的问题:\n这些方法中哪一种(power shell 或 \xd0\xa1#)最好?\n如果我使用 C# 和任务(System.Threading.Tasks) 来删除文件会更快吗?

\n

c# azure azure-powershell azure-blob-storage

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

需要在c#中计算存储在Azure存储中的文件的SHA1哈希值

我正在将大文件(1-10 GB)上传到azure存储,并且需要在上传时计算文件的SHA1哈希值。我是否可以在服务器上计算 SHA1,而无需下载文件?

c# azure azure-storage azure-blob-storage

4
推荐指数
1
解决办法
6507
查看次数

Azure blob,控制下载时的文件名

我们的应用程序使用户能够通过网络浏览器上传文件。文件名映射到 GUID,并且 blob 名称成为 GUID。当用户单击我们应用程序中的文件时,它应该使用原始文件名而不是 GUID blob 名称下载到他们的文件系统(显示另存为等)。

我发现这篇文章和类似的文章描述了如何在通过共享访问签名下载时在 blob 上设置内容处置。

公共下载 Azure blob 时的友好文件名

然而,我们的情况有点不同。我们在容器级别设置了一个 SAS(从技术上讲,我相信这称为共享访问策略——在任何给定时间最多可以有 5 个)。下载 blob 时,我们只需将 SAS 附加到 uri 的末尾,然后使用...

window.location.href = blobUri + containerSAS;
Run Code Online (Sandbox Code Playgroud)

...下载 blob。这将下载 blob,但使用 GUID 文件名。

我们如何获取适用于容器的现有 SAS 并将 blob 下载作为原始文件名?

请记住,这与应用于单个 blob 的 SAS 用例略有不同,因为......

  1. SAS 处于容器级别(与每个 blob 的单独 SAS 相比,这似乎是最佳实践)。
  2. 我们从 javascript 下载(相对于可以设置标头的 C# 代码)。

我尝试在上传过程(PUT 操作)期间设置 blob 的 Content-Disposition,但是当我下载 blob 时它似乎没有什么区别。下面,您可以看到为 PUT 请求(来自 Fiddler)设置的 Content-Disposition 标头。

在此输入图像描述

谢谢!

azure azure-blob-storage

4
推荐指数
1
解决办法
2548
查看次数

Need help downloading image from Azure Blobs using NodeJS

I got most of the code from the NodeJS Blob quickstart from azure, I am able to upload files including images successfully and I can see them in the azure storage dashboard just fine. But I can't seem to download them or get a URL to them and I need the url for my database so I can query it and use the url to retrieve the file.

The download part of the code in the quickstart isnt so clear …

azure-storage azure-storage-blobs node.js azure-blob-storage

4
推荐指数
1
解决办法
3350
查看次数

有没有办法从 azure blob 中获取文件结构?

我是 Azure 的新手,在我的 .Net 应用程序中使用 blob。

我希望能够获得包含文件夹、子文件夹和文件的结构。

现在,我已经想出了一种方法来与父母一起从所有文件夹和子文件夹中获取文件。除了解析这些文件的父文件的前缀之外,还有什么方法可以获得文件夹结构吗?

文件结构如下:

root container
 -folder1
   -subfolder1
       -file
       -file
   -subfolder2
       -file
   -file
 -file
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它只给我根目录中的文件夹,没有子文件夹:

            //returns account, client and container
            var blobData = GetBlobDetails(blobConnectionString, rootContainerName); 

            var rootContainer = blobData.Container;
            var blobList =  rootContainer.ListBlobsSegmentedAsync(string.Empty, false, BlobListingDetails.None, int.MaxValue, null, null, null);

            return (from blob in blobList.Result
                    .Results
                    .OfType<CloudBlobDirectory>()
                select blob).ToList();
Run Code Online (Sandbox Code Playgroud)

.net azure azure-storage-blobs azure-blob-storage

4
推荐指数
1
解决办法
4112
查看次数

4
推荐指数
2
解决办法
2770
查看次数

如何从 Azure Blob 存储 C# 中的文件 URL 获取容器名称

我们可以使用以下代码获取容器名称

new CloudBlobContainer(url).Name
Run Code Online (Sandbox Code Playgroud)

但是这种方法只有在 URL 是容器基 URL 时才有效。

如果我们尝试传递文件的 URL 并尝试获取容器名称,则代码不会按预期返回数据。在这种情况下,我们必须使用 CloudBlockBlob 对象

new CloudBlockBlob(new Uri(Url)).Container.Name
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以获取适用于以下两个 URL 的容器名称 http://127.0.0.1:10000/devstoreaccount1/10d59357-b4d1-41e8-ba2a-d92964e1ac53 http://127.0.0.1: 10000/devstoreaccount1/10d59357-b4d1-41e8-ba2a-d92964e1ac53/temp/1.txt

c# azure azure-storage-blobs azure-blob-storage

4
推荐指数
1
解决办法
1955
查看次数