Я могу воспроизвести проблему, с которой вы столкнулись. По сути, проблема в том, что содержимое не полностью записано в zip-файле, когда вы инициировали команду загрузки. В моем тесте размер zip-файла на локальном диске составлял 902 байта, однако на момент загрузки размер файлового потока составлял всего 40 байтов, и это вызывает проблему.
То, что я сделал, разделило две функции где первый просто создает файл, а другие читает из файла и загружает в хранилище. Вот код, который я использовал:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
var cloudBlobClient = storageAccount.CreateCloudBlobClient();
var cloudBlobContainer = cloudBlobClient.GetContainerReference("test");
cloudBlobContainer.CreateIfNotExists();
using (var fs = File.Create("test.zip"))
{
using (var s = new ZipOutputStream(fs))
{
s.PutNextEntry("entry1.xml");
byte[] buffer = File.ReadAllBytes(@"Path\To\MyFile.txt");
s.Write(buffer, 0, buffer.Length);
//Get the blob ref
}
}
using (var fs = File.OpenRead("test.zip"))
{
var blob = cloudBlobContainer.GetBlockBlobReference("test.zip");
blob.Properties.ContentEncoding = "zip";
blob.Properties.ContentType = "text/plain";
blob.Metadata["filename"] = "test.zip";
fs.Position = 0;
blob.UploadFromStream(fs);
}