2016-05-06 43 views
0

我有2個獨立的輔助角色:解壓存儲在一個文件Azure的結果的文件沒有擴展

WR1 - 存儲在團塊存儲特定容器給定文件(PDF),下面的代碼:

var folderName = dynamicFolderNameAsInputToThisMethod; 
      CloudBlobContainer container; 

      container = GetCloudBlobContainerByName(containerName); 

      var blob = container.GetBlockBlobReference(string.Format("{0}/{1}", folderName, fileName)); 
      blob.Properties.ContentType = inThisInstanceApplicationPdf; 
      await blob.UploadFromByteArrayAsync(storageBlob.FileAsByteArray, 0, storageBlob.FileAsByteArray.Length); 

      return string.Format("{0}/{1}/{2}", _blobClient.BaseUri, folderName, fileName); 

這節省了文件沒問題。

第二個工作人員角色從此字節數組中提取文件,將其壓縮並保存到blob存儲中的另一個「文件夾」。這是我如何得到字節數組:

var filesInContainer = new List<byte[]>(); 
      var blobContainer = GetCloudBlobContainerByName(fileProcessStage); 
      var blobDirectory = blobContainer.ListBlobs(
       string.Format("{0}/{1}", folderName, subFolderName)) 
       .FirstOrDefault(b => b is CloudBlobDirectory) as CloudBlobDirectory; 

      foreach (var blob in blobDirectory.ListBlobs()) 
      { 
       var blockBlob = blob as CloudBlockBlob; 
       byte[] fileContent = new byte[blockBlob.Properties.Length]; 
       blockBlob.DownloadToByteArray(fileContent, 0); 
       filesInContainer.Add(fileContent); 
      } 

      return filesInContainer; 

假設:提取時文件夾中總是有1個文件。

然後將其壓縮使用gzip:

public byte[] Compress(byte[] bytesToCompress) 
     { 
      using(var originalStream = new MemoryStream(bytesToCompress)) 
      { 
       using(var compressedFileStream = new MemoryStream()) 
       { 
        using (var compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress)) 
        { 
         originalStream.CopyTo(compressionStream); 
        } 

        return compressedFileStream.ToArray(); 
       } 
      } 
     } 

保存由該上述方法返回到另一個團塊容器作爲「filename.gz」文件中的字節數組。

但是,一切正常,當gz文件被下載並解壓縮後,其中的文件沒有擴展名,用戶必須重命名該文件併爲其提供.pdf。該文件然後顯示爲它應該。

我無法弄清楚在這個過程中丟失擴展名的文件在哪裏。

回答

0

不是gzip只是字節的壓縮而沒有文件的概念?我很確定你需要命名輸出filename.ext.gz,這樣當你解壓時,你得到filename.ext

(未壓縮的文件,名稱相同,減去.gz)

相關問題