Azure Blob存储-保存到文件时为404
我对Azure Blob存储还有另一个问题,这次是下载。我得到了一个没有问题的文件列表,不幸的是,当我想下载它时,我得到了一个404错误,文件没有找到Azure Blob存储-保存到文件时为404,azure,azure-storage,azure-storage-blobs,Azure,Azure Storage,Azure Storage Blobs,我对Azure Blob存储还有另一个问题,这次是下载。我得到了一个没有问题的文件列表,不幸的是,当我想下载它时,我得到了一个404错误,文件没有找到 using System.IO; using System.Linq; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; namespace BlobStorage { class Program {
using System.IO;
using System.Linq;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
namespace BlobStorage
{
class Program
{
static void Main(string[] args)
{
CloudStorageAccount backupStorageAccount = CloudStorageAccount.Parse(
"{connectionString}");
var backupBlobClient = backupStorageAccount.CreateCloudBlobClient();
var backupContainer = backupBlobClient.GetContainerReference("{container-name");
var list = backupContainer.ListBlobs(useFlatBlobListing: true);
foreach (var blob in list)
{
var blobFileName = blob.Uri.Segments.Last();
CloudBlockBlob blockBlob = backupContainer.GetBlockBlobReference(blobFileName);
string destinationPath = string.Format(@"D:\" + blobFileName +".txt");
blockBlob.DownloadToFile(destinationPath, FileMode.OpenOrCreate);
}
}
}
}
错误消息:
Microsoft.WindowsAzure.Storage.StorageException:“远程服务器
返回错误:(404)未找到。“
内部异常WebException:远程服务器返回错误:
(404)未找到
并指向该行:
blockBlob.DownloadToFile (destinationPath, FileMode.OpenOrCreate);
像这样的文件大多数存在于blob存储中。当我进入blob版本时,将url复制到一个文件中,我可以通过浏览器毫无问题地下载它。不幸的是,由于404错误,我无法从应用程序级别下载它
只有这样一个文件为什么存在?问题在于如何在下面的代码行中获得blob名称:
var blobFileName = blob.Uri.Segments.Last();
考虑到路径是tempdata/ExampleIotHub/02/2019/05/14/39
,blob的名称是ExampleIotHub/02/2019/05/14/39
(假设您的容器名称是tempdata
),但是您得到的blobFileName只有39(请参见示例)。由于没有名为39
的blob,因此出现了404错误
我建议您尝试做以下操作:
foreach (var blob in list)
{
var localFileName = blob.Uri.Segments.Last();
CloudBlockBlob blockBlob = blob as CloudBlockBlob;
if (blockBlob != null)
{
string destinationPath = string.Format(@"D:\" + localFileName +".txt");
blockBlob.DownloadToFile(destinationPath, FileMode.OpenOrCreate);
}
}
请注意,我没有尝试运行此代码,因此可能会出现一些错误。您的blob是否在虚拟文件夹中?是的,示例路径tempdata/ExampleIotHub/02/2019/05/14/39嘿,谢谢您的回答:)您的代码解决了我的问题,现在它正确地保存了文件。非常感谢你的帮助。