将 *multipart.FileHeader 的内容读取到 []byte 中。

huangapple go评论91阅读模式
英文:

Read content of *multipart.FileHeader into []byte

问题

如何在Go中将包含在*multipart.FileHeader中的文件的主体/内容读取到字节切片([]byte)中。

我唯一能够工作的是将内容读取到一个巨大大小的字节切片中,但是我当然想要文件的确切大小。
之后,我想用md5对文件内容进行哈希。

// file是从HTTP请求中获取的*multipart.FileHeader。
fileContent, _ := file.Open()
var byteContainer []byte
byteContainer = make([]byte, 1000000)
fileContent.Read(byteContainer)
fmt.Println(byteContainer)

英文:

How can I read the body/content of a file contained in a *multipart.FileHeader into a slice of bytes ([]byte) in GO.

The only thing I got to work was reading the content into a slice of bytes with a huge size, but of course I want the exact size of the file.
I want to hash the file content with md5 afterwards.

// file is a *multipart.FileHeader gotten from http request.
fileContent, _ := file.Open()
var byteContainer []byte
byteContainer = make([]byte, 1000000)
fileContent.Read(byteContainer)
fmt.Println(byteContainer)

答案1

得分: 5

尝试使用ioutil.ReadAll

https://play.golang.org/p/FUgPAZ9w2X.

在你的情况下,可以这样做:

byteContainer, err := ioutil.ReadAll(fileContent) // 你可能需要处理错误
fmt.Printf("size:%d", len(byteContainer))

你可能还想看一下multipart包文档中的这个示例,
https://play.golang.org/p/084tWn65-d

英文:

Try ioutil.ReadAll

https://play.golang.org/p/FUgPAZ9w2X.

In your case do;

byteContainer, err := ioutil.ReadAll(fileContent) // you may want to handle the error
fmt.Printf("size:%d", len(byteContainer))

You may also want to see this example from multipart package docs,
https://play.golang.org/p/084tWn65-d

huangapple
  • 本文由 发表于 2017年1月20日 10:16:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/41755011.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定