如果存儲(chǔ)在磁盤上,文件的底層具體類型將是 *os.File。在這種情況下,一切都清楚了。偉大的。但是,如果沒有,如果文件存儲(chǔ)在內(nèi)存中會(huì)發(fā)生什么?我的實(shí)際問題是,我正在嘗試獲取存儲(chǔ)在內(nèi)存中的不同文件的大小,這些文件是通過 html 表單獲得的,但我無法使用 os.Stat 來執(zhí)行 fileInfo.Size(),因?yàn)槲覜]有位置的文件,只是它的名字。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貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果你調(diào)用parseMultipartForm(0)
它會(huì)將整個(gè)文件寫入磁盤而不是在內(nèi)存中存儲(chǔ)任何內(nèi)容,f, _ := FormFile("file")
然后你可以使用fi, _ := f.(*os.File).Stat()

明月笑刀無情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
根據(jù)您想對(duì)數(shù)據(jù)做什么,最好的做法可能是使用 ioutil.ReadAll 將文件讀入字節(jié)切片。(無論如何,您最終可能希望將數(shù)據(jù)作為字節(jié)切片。)完成后,您可以使用 len 找到長度。
- 3 回答
- 0 關(guān)注
- 481 瀏覽
添加回答
舉報(bào)
0/150
提交
取消