go - ioutil.ReadAll替代方案,仅使用数据,而无需复制字节数组

标签 go io reader

mux.HandleFunc调用,我有一个http.Request.FormFile类型为multipart.File。我以浏览器的文件上传速度为基准,因此不需要验证数据。我当前的代码是:

fileBytes, err := ioutil.ReadAll(file)
if err != nil {
    fmt.Println(err)
}
return len(fileBytes)
ioutil.ReadAll不需要的副本。是否有另一种方法可以验证我是否拥有所有数据而无需创建副本?
(可选)我可以将len(fileBytes)替换为什么?如果应该在另一个问题中,则可以忽略它。
我尝试了什么.ReadAll调用 readAll 调用 bytes.Buffer.ReadFrom 调用io.Reader.Read,但我找不到。

最佳答案

使用 io.Copy() 将文件内容复制到 ioutil.Discard 中,该文件不存储而是丢弃数据。 io.Copy()复制直到达到EOF(或发生错误),并返回复制的字节数:

n, err := io.Copy(ioutil.Discard, file)

关于go - ioutil.ReadAll替代方案,仅使用数据,而无需复制字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62693856/

相关文章:

go - 用gdb调试go代码遇到问号

logging - 如何在 golang 中实现基于级别的日志记录?

go - 同时读取和写入数组是否安全 Go

haskell - 最小和最大函数中的类型错误

javascript - Adobe Reader Javascript 打开 .DOC

c# - 在 C# 中使用函数按字段名称返回数据库值索引

amazon-web-services - 使用缓冲过程将图像 URL 上传到 S3

java - 将文本行添加到文本文件的最佳策略

java - 如何打印从 SQL 到 Java 到 CSV 的列部分?

Azure 机器学习-Azure Blob 存储