我有这样一段代码,它获取一个BLOB存储文件并提取它,当我在我的计算机上测试保存结果时,它可以工作.
现在,我希望将提取的结果上传到另一个BLOB存储,而不是将文件保存在本地计算机上.我的挑战取决于如何将结果提取为字节或流,以便我可以上传,我确实try 了这一点,我没有收到错误,但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");
现在正在try 获取结果并将其上传到BLOB存储:
// 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);
所有的BLOB代码都可以很好地用于上传和下载.但提取结果的转换最终在上传的文件中给出了0个字节.
如果建议另一个解压缩库或其他解决方案,也是可以的.