据说,在文档中
如果存储在磁盘上,File的底层具体类型将是*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
}
Run Code Online (Sandbox Code Playgroud)
您可以利用multipart.File实现io.Seeker来查找其大小的事实.
cur, err := file.Seek(0, 1)
size, err := file.Seek(0, 2)
_, err := file.Seek(cur, 0)
Run Code Online (Sandbox Code Playgroud)
第一行查找文件的当前偏移量.第二个寻找文件的末尾并返回它与文件开头的关系.这是文件的大小.第三个是在寻找尺寸之前寻求我们所处的抵消.
您可以在此处阅读有关搜索方法的更多信息.