Windows Azure:在blob中创建子目录

时间:2010-04-11 18:35:46

标签: windows azure blob directory

我想在我的blob中创建一些子目录。但它运作得不好

这是我的代码

protected void ButUpload_click(object sender, EventArgs e)
    {
        // store upladed file as a blob storage
        if (uplFileUpload.HasFile)
        {
            name = uplFileUpload.FileName;
            // get refernce to the cloud blob container
            CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("documents");

            if (textbox.Text != "")
            {
                name = textbox.Text + "/" + name;
            }
            // set the name for the uploading files
            string UploadDocName = name;

            // get the blob reference and set the metadata properties
            CloudBlockBlob blob = blobContainer.GetBlockBlobReference(UploadDocName);
            blob.Metadata["FILETYPE"] = "text";
            blob.Properties.ContentType = uplFileUpload.PostedFile.ContentType;

            // upload the blob to the storage
            blob.UploadFromStream(uplFileUpload.FileContent);

        }
    }

我所做的是,如果我必须创建子目录,我将在文本框中输入子目录的名称。

例如,如果我需要在子目录“files”中创建名为“test.txt”的文件 然后,我的textbox.text = files uplFileUpload.FileName = test.txt

现在我将连接它们并上传到blob .. 但它运作不佳.. 我正好 https://test.core.windows.net/documents/files/

我没有得到整件事 我期待 https://test.core.windows.net/documents/files/test.txt

我做错了什么...... 如何在blob中创建子目录。

4 个答案:

答案 0 :(得分:2)

您可以使用blobContainer.ListBlobs(new BlobRequestOptions {UseFlatBlobListing = true});获取你正在寻找的视图(忽略斜杠,只列出所有blob)。

答案 1 :(得分:0)

乍一看,这段代码看起来不错。我会逐步完成代码,并在调用GetBlockBlobReference()之前验证UploadDocName是否符合预期。

答案 2 :(得分:0)

执行GetBlockBlobReference()后检查blob.Uri?

顺便说一句,每次我使用这种代码时,我都会使用GetBlobReference()......我想知道是否有可能存在差异? (那会非常奇怪。)

答案 3 :(得分:0)

它现在正在工作......这是我在显示中的错误blob的内容

protected void DisplayBlob_click(object sender, EventArgs e)
    {
        // get container referrence
        CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("documents");

        // create list
        IEnumerable<IListBlobItem> blobList = blobContainer.ListBlobs();

        // display name on the page
        string names = string.Empty;

        foreach (IListBlobItem item in blobList)
        {
            names += item.Uri + "<br />";

        }

        LURI.Text = names;
    }

仅显示当前目录,不会遍历子目录....

...谢谢