Windows Azure: создание подкаталогов внутри блоба - PullRequest
1 голос
/ 11 апреля 2010

Я хотел создать несколько подкаталогов внутри моего блоба. Но это не работает хорошо

Вот мой код

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);

        }
    }

Я сделал следующее: если мне нужно создать подкаталог, я введу имя подкаталога в текстовое поле.

например, если мне нужно создать файл с именем "test.txt" внутри подкаталога "files" Затем my 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 ]

2 голосов
/ 12 апреля 2010

Вы можете использовать blobContainer.ListBlobs (new BlobRequestOptions {UseFlatBlobListing = true}); чтобы получить вид, который вы ищете (игнорирует косые черты и просто перечисляет все капли).

0 голосов
/ 12 апреля 2010

Проверьте blob.Uri после того, как вы выполните GetBlockBlobReference ()?

Кстати, каждый раз, когда я делаю такой код, я вместо этого использую GetBlobReference () ... Интересно, есть ли шанс, что есть разница? (Это было бы очень странно.)

0 голосов
/ 12 апреля 2010

Сейчас работает ... Это была моя ошибка в отображении содержимого 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;
    }

, который показывает только текущий каталог и не перемещается в подкаталоги ....

Спасибо ....

0 голосов
/ 12 апреля 2010

На первый взгляд, этот код выглядит нормально. Я бы прошел по коду и проверил, что UploadDocName - это то, что вы ожидаете, прежде чем вызывать GetBlockBlobReference ().

...