gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:24:55 25 4
gpt4 key购买 nike

the docs据说

If stored on disk, the File's underlying concrete type will be an *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
}

最佳答案

您可以利用 multipart.File 实现 io.Seeker 的事实来找到它的大小。

cur, err := file.Seek(0, 1)
size, err := file.Seek(0, 2)
_, err := file.Seek(cur, 0)

第一行查找文件的当前偏移量。第二个寻找文件的末尾并返回它相对于文件开头的位置。这是文件的大小。第三个寻找我们在尝试找到大小之前所在的偏移量。

您可以阅读有关搜索方法的更多信息 here .

关于Go - 什么是真正的 multipart.File?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com