2017-05-30 101 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存储也被称为对象存储

相关问题