为了账号安全,请及时绑定邮箱和手机立即绑定

Go - 什么是真正的 multipart.File?

Go - 什么是真正的 multipart.File?

Go
一只萌萌小番薯 2021-06-04 17:43:22
如果存储在磁盘上,文件的底层具体类型将是 *os.File。在这种情况下,一切都清楚了。伟大的。但是,如果没有,如果文件存储在内存中会发生什么?我的实际问题是,我正在尝试获取存储在内存中的不同文件的大小,这些文件是通过 html 表单获得的,但我无法使用 os.Stat 来执行 fileInfo.Size(),因为我没有位置的文件,只是它的名字。fhs := req.MultipartForm.File["files"]for _, fileHeader := range fhs {    file, _ := fileHeader.Open()    log.Println(len(file)) // Gives an error because is of type multipart.File    fileInfo, err  := os.Stat(fileHeader.Filename) // Gives an error because it´s just the name, not the complete path    // Here I would do things with the file}
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

如果你调用parseMultipartForm(0)它会将整个文件写入磁盘而不是在内存中存储任何内容,f, _ := FormFile("file")然后你可以使用fi, _ := f.(*os.File).Stat()


查看完整回答
反对 回复 2021-06-07
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

根据您想对数据做什么,最好的做法可能是使用 ioutil.ReadAll 将文件读入字节切片。(无论如何,您最终可能希望将数据作为字节切片。)完成后,您可以使用 len 找到长度。


查看完整回答
反对 回复 2021-06-07
  • 3 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信