簡體   English   中英

Azure Blob存儲-當我保存到文件時為404

[英]Azure Blob Storage - 404 when i save to file

我有Azure Blob存儲的另一個問題,這次是下載。 我得到了沒有問題的文件列表,不幸的是,當我要下載它時,出現了404錯誤,找不到該文件。

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 ,斑的名字是ExampleIotHub/02/2019/05/14/39 (假設你的容器名稱是tempdata ),但是你得到的blobFileName是僅39(請here查看示例)。 由於沒有名稱為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);
    }
}

請注意,我沒有嘗試運行此代碼,因此可能會出現一些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM