2017-05-30 98 views
2

我有一個名爲notactuallygunzipped.gz文件,該文件是發生在.gz結束的,實際上並不是gunzip解壓,看起來像這樣的純文本文件:Azure Blob Store如何處理以.gz結尾的文件?

1 foo bar 
2 fizz buzz 

我把它上傳到Azure像這樣:

az storage blob upload \ 
    --container-name testroot \ 
    --file notactuallygunzipped.gz \ 
    --name "gunzip/notactuallygunzipped.gz" 

然後我使用Azure Go SDK到fetch the blob。我期望找回像1 foo bar或任何以字節格式,而是我

\x1f\x8b\x08\x08\x9d\xfa-Y\x00\x03notactuallygunzipped\x003TH\xcb\xcfWHJ,\xe22RH\xca\xccKWH\xca\xcfK\xe7\x02\x00\xa5\x00\xef\x1e\x16\x00\x00\x00 

如果我的文件重命名的東西像plaindata.txt它工作正常,我得到了我所期望:

'1 foo bar\n2 fizz buzz\n' 

Azure會做一些不可思議的事嗎?自動壓縮還是沿着這些線?

回答

2

這與Azure無關。您上傳的文件notactuallygunzipped.gz是gzip壓縮文件。您可以通過less命令閱讀它,該命令默認支持解壓縮gzip格式,看起來像純文本,但是如果使用cat則是二進制格式。因此,您需要通過去包compress/gzip解壓縮從Azure Blob Storage下載的blob的字節。

作爲參考,以下是使用Go從Azure Blob存儲讀取gzip文件的示例代碼。

package main 

import (
    "compress/gzip" 
    "fmt" 
    "io/ioutil" 

    "github.com/Azure/azure-storage-go" 
) 

func main() { 
    accountName := "<your-account-name>" 
    accountKey := "<your-account-key>" 
    client, _ := storage.NewBasicClient(accountName, accountKey) 
    blobClient := client.GetBlobService() 
    containerName := "mycontainer" 
    container := blobClient.GetContainerReference(containerName) 
    flag, _ := container.CreateIfNotExists(nil) 
    fmt.Println(flag) 
    blobName := "notactuallygunzipped.gz" 
    blob := container.GetBlobReference(blobName) 
    readCloser, _ := blob.Get(nil) 
    defer readCloser.Close() 
    zr, _ := gzip.NewReader(readCloser) 
    content, _ := ioutil.ReadAll(zr) 
    fmt.Printf("%s", content) 
} 

希望它有幫助。

+0

其實我解壓縮方式,但對我來說,我上傳具有'.gz'擴展名的純文本文件中的文件 - 我從來沒有真正將其壓縮(見我的編輯) –

+1

@ClicquottheDog我試着通過'az' cli工具上傳一個名爲'notactuallygunzipped.gz'的文本文件,並通過我的golang程序下載,沒有'gzip'。這顯示純文本和原始文本內容沒有任何二進制字節格式。所以我確信Azure Blob Storage和'az'工具不會改變你的文件。同時,我確認您的文件已經被壓縮,這是根據您的字節格式內容從blob,其中包括一個文件名頭信息,不僅僅是'.gz'擴展名。 –

+0

原來我的編輯器是在自動壓縮文件 - 今天我學到了一些新東西! –

0

BLOB - 二進制大對象

內容或文件擴展名並不重要。從天青docs

天青BLOB存儲的是,在 雲作爲對象/斑點存儲非結構化數據的服務。 Blob存儲可以存儲任何類型的文本或二進制數據,例如文檔,媒體文件或應用程序安裝程序。 的Blob存儲也被稱爲對象存儲

相關問題