我正在移植代码以使用 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 属性?它不会总是更新到当前时间,所以我不能只是重新上传/触摸文件。
问题背景:
这可能是一个简单的问题,但我找不到答案。我刚刚开始使用 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?
我们的 Blob 存储帐户结构:
\n\n容器名称:简单
\n\n在这个容器内我们有 blob:
\n\naa/one.zip\naa/two.zip\nbb/ss.zip\nbb/dd.zip\nRun 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背景:\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我正在将大文件(1-10 GB)上传到azure存储,并且需要在上传时计算文件的SHA1哈希值。我是否可以在服务器上计算 SHA1,而无需下载文件?
我们的应用程序使用户能够通过网络浏览器上传文件。文件名映射到 GUID,并且 blob 名称成为 GUID。当用户单击我们应用程序中的文件时,它应该使用原始文件名而不是 GUID blob 名称下载到他们的文件系统(显示另存为等)。
我发现这篇文章和类似的文章描述了如何在通过共享访问签名下载时在 blob 上设置内容处置。
然而,我们的情况有点不同。我们在容器级别设置了一个 SAS(从技术上讲,我相信这称为共享访问策略——在任何给定时间最多可以有 5 个)。下载 blob 时,我们只需将 SAS 附加到 uri 的末尾,然后使用...
window.location.href = blobUri + containerSAS;
Run Code Online (Sandbox Code Playgroud)
...下载 blob。这将下载 blob,但使用 GUID 文件名。
我们如何获取适用于容器的现有 SAS 并将 blob 下载作为原始文件名?
请记住,这与应用于单个 blob 的 SAS 用例略有不同,因为......
我尝试在上传过程(PUT 操作)期间设置 blob 的 Content-Disposition,但是当我下载 blob 时它似乎没有什么区别。下面,您可以看到为 PUT 请求(来自 Fiddler)设置的 Content-Disposition 标头。
谢谢!
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
我是 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 v12 SDK https://docs.microsoft.com/da-dk/azure/storage/blobs/storage-quickstart-blobs-dotnet
但我似乎无法找到上传 blob 时如何指定 ContentType 的方法。
有人知道吗?
提前致谢。
我们可以使用以下代码获取容器名称
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