Как лучше всего загрузить большое количество файлов в хранилище файлов Azure?

Я хочу, чтобы хранилище файлов, а не хранилище больших двоичных объектов (я думаю). Это код для моей лазурной функции, и у меня просто куча вещей в моем node_modules папка.

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

Прямо сейчас я перебираю все мои файлы и звоню:

var fileStream = new stream.Readable();
fileStream.push(myFileBuffer);
fileStream.push(null);

fileService.createFileFromStream('taskshare', 'taskdirectory', 'taskfile', fileStream, myFileBuffer.length, function(error, result, response) {
  if (!error) {
    // file uploaded
  }
});

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

1 ответ

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

Если библиотека перемещения данных хранилища Microsoft Azure является приемлемой, попробуйте ее использовать. Библиотека перемещения данных хранилища Microsoft Azure, предназначенная для высокопроизводительной загрузки, загрузки и копирования BLOB-объектов и файлов хранилища Azure. Эта библиотека основана на базовой структуре перемещения данных, которая обеспечивает AzCopy.

Мы также могли бы получить демонстрационный код из документа github.

string storageConnectionString = "myStorageConnectionString";
CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("mycontainer");
blobContainer.CreateIfNotExists();
string sourcePath = "path\\to\\test.txt";
CloudBlockBlob destBlob = blobContainer.GetBlockBlobReference("myblob");

// Setup the number of the concurrent operations
TransferManager.Configurations.ParallelOperations = 64;
// Setup the transfer context and track the upoload progress
SingleTransferContext context = new SingleTransferContext();
context.ProgressHandler = new Progress<TransferStatus>((progress) =>
{
    Console.WriteLine("Bytes uploaded: {0}", progress.BytesTransferred);
});
// Upload a local blob
var task = TransferManager.UploadAsync(
    sourcePath, destBlob, null, context, CancellationToken.None);
task.Wait();
Другие вопросы по тегам