2016-10-28 38 views
1

TL; DR:是否可以將大型的MemoryStream上傳到Azure,因爲它可以在壓縮的同時以塊的形式上傳文件?將Big ZipArchive-MemoryStream上傳到Azure

我有保存到MemoryStream的文件,我將這些文件添加到另一個MemoryStream中的ZipArchive
這MemoryStream的我要上傳到Azure-BlockBlob-Storage使用

blockBlob.UploadFromStream(zipMemoryStream); 

到目前爲止好。
現在的問題是,Zip-Archive可能會變大,然後8GB這是MemoryStream的問題。

是否有可能從存儲器流中將塊作爲塊上傳到azure,並從Stream中刪除這些字節?

還是有更好的方法來處理zipArchive和天藍色?

對於荏苒我使用的是類ZipArchive在Package System.IO.Compression

最好的問候,
弗洛

+0

我假設你使用Block Blob? – boades

+0

是的,我正在使用塊blob :) –

+0

你用什麼類壓縮?我相信我知道如何解決這個問題。請顯示你的代碼。 – boades

回答

3

它可能不是你要找什麼,但你嘗試做這樣的事情:

var blob = container.GetBlockBlobReference("zipped.zip"); 
using (var stream = new ZipArchive(blob.OpenWrite(), ZipArchiveMode.Create)) 
{ 
    var entry = stream.CreateEntry("entry1"); 
    using (var es = entry.Open()) 
    { 
     // Fill entry with data 
    } 

    // Other code 
} 

當你調用CloudBlockBlobOpenWrite它創建的CloudBlobStream,在工程實例與MemoryStream不同的方式。 CloudBlobStream以4MB塊的形式向Azure存儲服務發送數據,據我所知,它不會將old塊保存到內存中。

+0

我想這正是什麼我在尋找,我會嘗試,並給你一個迴應,但我會接受你,非常感謝你的快速回答 –