我正在处理多部分/表单数据文件上传,我的后端使用 Goio.Copy将表单数据复制到本地文件。func SaveFileHandler() error { ... file := form.File["file_uploaded"] // file uploaded in form src, _ := file.Open() // here the original file size is 35540353 in my case, // which is a video/mp4 file fmt.Println(file.Size) // create a local file with same filename dst, _ := os.Create(file.Filename) // save it _, err = io.Copy(dst, src) // err is nil fmt.Println(err) stat, _ := dst.Stat() // then the local file size differs from the original updated one. Why? // local file size becomes 35537281 (original one is 35540353) fmt.Println(stat.Size()) // meanwhile I can't open the local video/mp4 file, // which seems to be broken due to losing data from `io.Copy` ...怎么可能?是否有任何最大缓冲区大小io.Copy?或者在这种情况下文件mime类型是否重要?我尝试使用 png 和 txt 文件,并且都按预期工作。Go 版本是go1.12.6 linux/amd64
1 回答

MYYA
TA贡献1868条经验 获得超4个赞
您的问题中没有太多信息,但是根据您所说,我敢打赌,在您调用dst.Stat(). 您可以先关闭文件以确保数据已完全刷新:
func SaveFileHandler() error {
...
// create a local file with same filename
dst, _ := os.Create(file.Filename)
// save it
_, err = io.Copy(dst, src)
// Close the file
dst.Close()
// err is nil
fmt.Println(err)
stat, _ := dst.Stat()
...
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消