التدريب - الحصول على مراجع النقطة

مكتمل

للتفاعل مع حاوية في موقع تخزين الكائنات الثنائية كبيرة الحجم، استخدم عنصر BlobContainerClient. بالإضافة إلى إنشاء حاويات كما رأيت في الوحدة الأخيرة، يمكن أيضا استخدام عنصر BlobContainerClient لسرد الكائنات الثنائية كبيرة الحجم في حاوية.

عرض الكائنات الثنائية كبيرة الحجم في حاوية

احصل على قائمة بالكائنات الثنائية كبيرة الحجم في حاوية باستخدام BlobContainerClientأسلوب .GetBlobsAsync وراء الكواليس، يقوم العميل بإجراء استدعاء HTTP واحد أو أكثر إلى Azure لسرد جميع الكائنات الثنائية كبيرة الحجم في الحاوية. نظرا لأن هذا الأسلوب غير متزامن، فأنت بحاجة إلى await النتائج أثناء قراءتها. قد لا يتم إرجاعها جميعا في مكالمة HTTP واحدة. تظهر التعليمات البرمجية التالية النمط القياسي لقراءة النتائج مع تكرار foreach حلقي.

AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();

await foreach (var blob in blobs)
{
    // Read the BlobItem and work with it here
}

يمكنك الحصول على قائمة الكائنات الثنائية كبيرة الحجم في حاوية باستخدام ⁧listBlobs⁩ ⁧أسلوب في BlobContainerClient⁩. وراء الكواليس، يقوم العميل بإجراء استدعاء HTTP واحد أو أكثر إلى Azure لسرد جميع الكائنات الثنائية كبيرة الحجم في الحاوية. تقوم هذه الطريقة بإرجاع PagedIterable<BlobItem> التي تنفذ Iterable<BlobItem>. بعد ذلك، يمكنك قراءته عنصرًا واحدًا في كل مرة أو حسب صفحة العناصر. تظهر التعليمات البرمجية التالية النمط القياسي لقراءة النتائج مع تكرار for حلقي.

for (BlobItem blob : blobContainerClient.listBlobs()) {
    // Read the BlobItem and work with it here
}
blobContainerClient.listBlobs()
    .stream()
    .map(blobItem -> /* Read the BlobItem and work with it here */)
    .collect(Collectors.toList());

تمرين

تتطلب إحدى الميزات في تطبيقك الحصول على قائمة الكائنات الثنائية كبيرة الحجم من واجهة برمجة التطبيقات. استخدم النمط الموضح مسبقا لسرد جميع الكائنات الثنائية كبيرة الحجم في الحاوية الخاصة بنا. في أثناء معالجة القائمة، تحصل على اسم كل نقطة.

باستخدام المحرر، استبدل GetNames في BlobStorage.cs بالتعليمات البرمجية التالية، واحفظ التغييرات.

public async Task<IEnumerable<string>> GetNames()
{
    List<string> names = new List<string>();

    BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);

    // Get the container the blobs are saved in
    BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);

    // This gets the info about the blobs in the container
    AsyncPageable<BlobItem> blobs = containerClient.GetBlobsAsync();

    await foreach (var blob in blobs)
    {
        names.Add(blob.Name);
    }
    return names;
}

يعالج FilesController الأسماء التي يرجعها هذا الأسلوب لتحويل الأسماء إلى عناوين URL. عند إعادتها إلى العميل، تُعرض الأسماء باعتبارها ارتباطات تشعبية على الصفحة.

باستخدام المحرر، استبدل listNames في BlobStorage.java بالتعليمات البرمجية التالية، واحفظ التغييرات.

public List<String> listNames() {
    return blobContainerClient.listBlobs()
      .stream()
      .map(BlobItem::getName)
      .collect(Collectors.toList());
}

IndexBean ومعالجة index.xhmtl الأسماء التي تم إرجاعها بواسطة هذا الأسلوب ليتم عرضها كارتباطات تشعبية على الصفحة.