现象描述:在调用完io.Copy()方法之后,再次直接读取文件,读取的结果为空。具体代码如下:
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"io"
"io/ioutil"
"os"
)
func main(){
file,_ := os.Open("D:/autoUpload/xixi.txt")
defer file.Close()
bytes1 , _ := ioutil.ReadAll(file)
fmt.Println("文本内容:",string(bytes1))
//求文件哈希值
h := sha256.New()
io.Copy(h,file)
sum := h.Sum(nil)
currentHash := hex.EncodeToString(sum)
fmt.Println("当前文件的hash码为:",currentHash)
bytes2 , _ := ioutil.ReadAll(file)
fmt.Println("文本内容:",string(bytes2))
//文件上传,自定义的方法,读者可忽略
UploadFile("http://127.0.0.1:8000", nil, "file", "xixi.txt", file)
}
运行之后打印结果如下:
文本内容: 这是文本文件的内容,this is the content of text file
当前文件的hash码为: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
文本内容:
可以看到:在第二次打印文件内容时,文件内容为空了,这就会导致在UploadFile文件上传函数被调用时,文件的内容也不会被上传到服务器。
造成这种现象的原因主要是:我们在第二次打印文件内容之前对文件做了一次求has

在Golang中,调用io.Copy()后直接读取文件会导致内容为空,因文件指针已移动至末尾。为解决此问题,需在再次读取前使用file.Seek(0,0)将文件指针重置到开头,确保文件内容能被正确读取和上传。"
111747397,10294887,Python使用线性回归预测股票价格,"['机器学习', 'Python编程', '数据分析', '股票预测', '线性模型']

68

被折叠的 条评论
为什么被折叠?



