2013-07-28 3 views
4

gzip을 사용하여 정적 js 파일을 Azure blob에 업로드하려고합니다.하지만 결국 0 바이트 blob로 끝납니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?Gzip 및 Azure blob에 업로드

var filePath = "C:\test.js"; 

using (var compressed = new MemoryStream()) { 
using (var gzip = new GZipStream(compressed, CompressionMode.Compress)) { 
    var bytes = File.ReadAllBytes(filePath); 
    gzip.Write(bytes, 0, bytes.Length); 

    var account = CloudStorageAccount.Parse("..."); 
    var blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials); 
    var blobContainer = blobClient.GetContainerReference("temp"); 
    var blob = blobContainer.GetBlockBlobReference(Path.GetFileName(filePath)); 
    blob.Properties.ContentEncoding = "gzip"; 
    blob.Properties.ContentType = "text/javascript"; 
    blob.Properties.CacheControl = "public, max-age=3600"; 

    blob.UploadFromStream(compressed); 
} 
} 
+0

저장 클라이언트에 관한 질문을 게시 할 때 사용중인 저장 장치 라이브러리의 버전을 포함하면 도움이됩니다. 버전 간에는 차이가 있습니다. – MikeWo

답변

5

압축 된 스트림에서 스트림 위치를 0으로 재설정해야합니다. 스트림에 데이터를 기록했지만 마지막 행의 스트림에서 업로드하려고하면 작성한 데이터의 끝 부분에 스트림의 위치가 표시되므로 blob.UploadFromStream은 스트림의 현재 위치에서 시작합니다. 스트림은 아무 것도 없습니다.

compressed.Position = 0; 

스트림의 전체 내용을 업로드해야합니다 : 당신은 업로드를 수행하기 전에

는 다음을 추가합니다.

이것은 반드시 하늘색 일 필요는 없으며 스트림과 함께 작동하는 대부분의 코드는 스트림의 현재 위치에서 작동합니다. 나는 여러 번 그것을 태웠다.

+0

그게 전부 였어. 감사! – user2628438

관련 문제