У меня есть около 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();
}
}
Мне было интересно, есть ли другой метод, который я мог бы использовать для обработки загрузки, чтобы сделать ее как можно быстрее. Этот конкретный проект включает в себя импорт большого количества данных из одной системы в другую, и по причинам заказчиков это должно происходить как можно быстрее.