Microsoft Azure: Cách tạo thư mục con trong vùng chứa blob


97

Cách tạo thư mục con trong vùng chứa blob

ví dụ,

trong vùng chứa blog của tôi http://veda.blob.core.windows.net/document/

Nếu tôi lưu trữ một số tệp, nó sẽ

http://veda.blob.core.windows.net/document/1.txt

http://veda.blob.core.windows.net/document/2.txt

Bây giờ, cách tạo một thư mục con

http://veda.blob.core.windows.net/document/folder/

Để tôi có thể lưu trữ các tệp

http://veda.blob.core.windows.net/document/folder/1.txt

Câu trả lời:


137

Để thêm vào những gì Egon đã nói, chỉ cần tạo blog của bạn có tên "folder / 1.txt", và nó sẽ hoạt động. Không cần tạo thư mục.


3
cách bạn lọc hoặc lấy tất cả các tệp này từ "thư mục"?
afr0

2
Điều này không hiệu quả với tôi, cho biết các container không thể sử dụng bất cứ thứ gì ngoài chữ thường, dấu gạch nối, số. Tương tự cho tên tệp
Green_qaue

@Green_qaue bạn phải chỉ sử dụng các chữ cái thường và số để đặt tên cho vùng chứa / thư mục của mình và đó là lý do tại sao bạn gặp lỗi.
Sapan Ghafuri

1
Nó tạo ra một số thư mục với cùng một thư mục, ý tôi là mỗi lần tôi tải tệp lên, nó lại tạo ra thư mục có tên là "thư mục", có phương pháp nào để kiểm tra xem thư mục có tồn tại hay không nên không tạo nó?
amal50

@SapanGhafuri điều này không đúng, bạn có thể tạo thư mục chứa các ký tự viết hoa
codah

36

Thực ra chỉ có một lớp container duy nhất. Bạn hầu như có thể tạo một "hệ thống tệp" giống như lưu trữ nhiều lớp, nhưng trên thực tế, mọi thứ sẽ nằm trong 1 lớp, nơi chứa nó.

Để tạo một "hệ thống tệp" ảo như lưu trữ, bạn có thể có các tên blob có chứa '/' để bạn có thể làm bất cứ điều gì bạn thích với cách bạn lưu trữ. Ngoài ra, điều tuyệt vời là bạn có thể tìm kiếm một đốm màu ở cấp độ ảo, bằng cách đưa ra một phần chuỗi, tối đa là '/'.

Hai thứ này, thêm '/' vào đường dẫn và một phần chuỗi để tìm kiếm, cùng nhau tạo ra một bộ lưu trữ "hệ thống tệp" ảo.


Bạn có thể chia sẻ mẫu C #? blob.The tên là chỉ đọc tài sản vì vậy chúng tôi không thể tạo ra một blob.Name với "/"
ABB

34

Có một bình luận của @ afr0 hỏi cách lọc trên các thư mục ..

Có hai cách sử dụng dấu GetDirectoryReferencehoặc lặp qua các đốm màu vùng chứa và kiểm tra loại. Đoạn mã dưới đây bằng C #

CloudBlobContainer container = blobClient.GetContainerReference("photos");

//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");

//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
    if (item.GetType() == typeof(CloudBlobDirectory))
    {
        // we know this is a sub directory now
        CloudBlobDirectory subFolder = (CloudBlobDirectory)item;

        Console.WriteLine("Directory: {0}", subFolder.Uri);
    }
}

đọc phần này để biết thêm chi tiết: http://www.codeproject.com/Articles/297052/Azure-Storage-Blobs-Service-Working-with-Directori


1
Đây sẽ là câu trả lời cho đến ngày hôm nay. +1
MickyD

2
Đó là thông tin tốt nhưng nó có trả lời 'Cách tạo thư mục con trong vùng chứa blob' không?
codah

20

Trong Azure Portal, chúng tôi có tùy chọn bên dưới khi tải tệp lên:

nhập mô tả hình ảnh ở đây



4

Bạn không cần tạo thư mục con. Chỉ cần tạo vùng chứa blob và sử dụng tên tệp như tên tệp biến như mã dưới đây:

string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream

2

Như @Egon đã đề cập ở trên, không có quản lý thư mục thực trong bộ lưu trữ BLOB.

Bạn có thể đạt được một số tính năng của hệ thống tệp bằng cách sử dụng '/' trong tên tệp, nhưng điều này có nhiều hạn chế (ví dụ: điều gì xảy ra nếu bạn cần đổi tên "thư mục"?).

Theo nguyên tắc chung, tôi sẽ giữ các tệp của mình càng phẳng càng tốt trong một vùng chứa và để ứng dụng của tôi quản lý bất kỳ cấu trúc nào tôi muốn hiển thị cho người dùng cuối (ví dụ: quản lý cấu trúc thư mục lồng nhau trong cơ sở dữ liệu của tôi , có bản ghi cho từng tệp, tham chiếu BLOB bằng cách sử dụng tên vùng chứa và tên tệp).


1

Gặp sự cố tương tự khi dùng thử ứng dụng không máy chủ đầu tiên của Azure Sample .
Đây là thông tin về cách tôi đã giải quyết bằng cách xóa \ trước $ web.

Lưu ý: $ web container được tạo tự động khi bật trang web tĩnh. Chưa bao giờ thấy $ root container ở bất cứ đâu.

//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d \$web --account-name firststgaccount01

//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01

-2

Đây là cách tôi làm điều đó trong CoffeeScript trên Node.JS:

blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
    if err
        console.log 'failed to create path', err
    else
        console.log 'created path', path, result

4
Câu hỏi đặt ra là gắn thẻ nhưC#
Rafael Herscovici

@Dementic Do đó, tôi đề cập đến CoffeeScript, chỉ là JavaScript mà không có điểm mấu chốt. Không quá khó để chuyển sang C #, đặc biệt là so với câu trả lời được chấp nhận thậm chí không có trong ngôn ngữ lập trình.
Cees Timmerman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.