Go - 什么是真正的 multipart.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

}


一只萌萌小番薯
浏览 441回答 3
3回答

皈依舞

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

明月笑刀无情

根据您想对数据做什么,最好的做法可能是使用 ioutil.ReadAll 将文件读入字节切片。(无论如何,您最终可能希望将数据作为字节切片。)完成后,您可以使用 len 找到长度。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go