У меня есть код, который получает файл хранилища больших двоичных объектов и извлекает его. Он работает, когда я тестирую сохранение результата на своем компьютере.
Теперь вместо сохранения файла на локальном компьютере , я хочу загрузить извлеченный результат в другое хранилище BLOB-объектов. Моя задача заключается в том, как я могу извлечь результаты в виде байтов или потока, чтобы их можно было загрузить. Я попробовал это и не получил ошибок, но большой двоичный объект имеет размер 0 байт. Любые советы приветствуются.
Код: Выделить всё
var blobEndPointSrc = "https://storageaccountname.blob.core.windows.net/data-source-raw?etc...";
var blobContainerClientSrc = GetBlobServiceClientSAS(blobEndPointSrc);
var blobClientSrc = blobContainerClientSrc.GetBlobClient("file.tar.gz");
var blobDownloadInfo = blobClientSrc.OpenRead();
using Stream gzipStream = new GZipInputStream(blobDownloadInfo);
// test on local drive and works.
using var tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
tarArchive.ExtractContents(@"D:\file");
Код: Выделить всё
// using var tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
// tarArchive.ExtractContents(@"D:\file");
var tarBuffer = TarBuffer.CreateInputTarBuffer(gzipStream);
Stream result = new MemoryStream();
TarBuffer.CreateOutputTarBuffer(result);
var blobEndPointDst = = "https://storageaccountname2.blob.core.windows.net/data-source-raw?etc...";
var blobContainerClientDst = GetBlobServiceClientSAS(blobEndPointDst);
var blobClientDst = blobContainerClient1.GetBlobClient("extracted_file");
blobClientDst.Upload(result, true);
It is also ok if another extracting library is suggested or another solution.
Источник: https://stackoverflow.com/questions/781 ... to-another