我正在尝试将图像保存到我们的Azure博客存储中。感谢通过代码段下方的链接提供的有用响应,我能够将文件成功保存到顶级容器中。不幸的是,我希望将文件保存到该容器中的子目录中。而且,对于我的生活,我无法让它发挥作用。
目前,图片正在保存到我们的"图像"容器。在该容器内是一个文件夹,"成员"。我想将文件保存到该子目录。所以" images / members"。我试图通过" images / members" GetBlockBlobReference然后文件根本没有保存(或者,至少我找不到它)。
这看起来应该很简单。提前致谢。
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("images");
CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
blockBlob.UploadFromStream(stream);
Top-level container. The image with the Guid is one that I uploaded
The "members" directory. Sorted by most recent; nothing recent appearing
Helpful solution that got me to saving successfully to the top-level container
答案 0 :(得分:3)
“images”是容器的名称。
您需要做的是从
更改此行CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
到
CloudBlockBlob blockBlob = container.GetBlockBlobReference("members/" + filename);
然后您可以使用Azure Storage Explorer查看您的文件和文件夹: https://azure.microsoft.com/en-us/features/storage-explorer/
答案 1 :(得分:0)
在文件名中使用斜杠(/
)将创建一个“文件夹”。我使用'文件夹',因为它是一个虚拟文件夹,这个技巧用于向人们提供文件夹的概念。实际上只有一个级别的分组是Container
。
文件名中的每个斜杠(/
)代表一个“文件夹”,因此创建一个文件名为firstFolder/secondFolder/filename.txt
的blob将创建一个具有该名称的文件。这看起来像一个路径为firstFolder
的文件 - > secondFolder
。您可以在ListBlobs
设置为true的情况下向容器询问useFlatBlob
,并返回特定容器中的所有blob。所以所有文件夹中都有Blob。
您还可以通过使用CloudBlobContainer.GetDirectoryReference获取DirectoryReference
并在其下列出blob来询问虚拟文件夹中的所有blob。
此处有更多信息:Work with Blob resources
答案 2 :(得分:0)
你可以按照这段代码来做同样的事情。
output = detected_anomaly.to_csv (encoding = "utf-8", index=False)
blob_path = 'blobfolder1/blobfolder2/'
blob_path_anomalies = blob_path + '<created_blob_folder_name>/demo.csv'
blob_service.create_blob_from_text(container_name, blob_path_anomalies, output)