Пакетная загрузка огромных наборов изображений в хранилище BLOB-объектов Azure

У меня есть около 110 000 изображений различных форматов (jpg, png и gif) и размеры (2-40 КБ), хранящиеся локально на моем жестком диске. Мне нужно загрузить их в хранилище BLOB-объектов Azure. При этом мне нужно установить некоторые метаданные и ContentType большого двоичного объекта, но в противном случае это прямая массовая загрузка.

В настоящее время я использую следующее, чтобы обрабатывать загрузку одного изображения за раз (параллельно для 5-10 одновременных задач).

static void UploadPhoto(Image pic, string filename, ImageFormat format)
{
    //convert image to bytes
    using(MemoryStream ms = new MemoryStream())
    {
        pic.Save(ms, format);
        ms.Position = 0;

        //create the blob, set metadata and properties
        var blob = container.GetBlobReference(filename);
        blob.Metadata["Filename"] = filename;
        blob.Properties.ContentType = MimeHandler.GetContentType(Path.GetExtension(filename));

        //upload!
        blob.UploadFromStream(ms);
        blob.SetMetadata();
        blob.SetProperties();
    }
}

Мне было интересно, есть ли другой метод, который я мог бы использовать для обработки загрузки, чтобы сделать ее как можно быстрее. Этот конкретный проект включает в себя импорт большого количества данных из одной системы в другую, и по причинам заказчиков это должно происходить как можно быстрее.

9
задан Dusda 10 October 2011 в 22:25
поделиться