【发布时间】:2019-08-01 21:20:25
【问题描述】:
使用 golang gin,我使用以下方式读取文件数据:
file, fileHeader, err:=ctx.Request.FormFile("blabla...")
我需要写这个吗?
defer file.Close()
我跳转到源代码,上面写着:
// Open opens and returns the FileHeader's associated File.
func (fh *FileHeader) Open() (File, error) {
if b := fh.content; b != nil {
r := io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b)))
fmt.Printf("TODDLINE:152\n")
fmt.Printf("TODDLINE:154:fmpfile:%#v\n", fh.tmpfile)
fmt.Printf("TODDLINE:154:Filename:%#v\n", fh.Filename)
return sectionReadCloser{r}, nil
}
fmt.Printf("TODDLINE:155\n")
return os.Open(fh.tmpfile)
}
如果它使用 os.Open,我想我必须关闭文件,但如果它重新调整 sectionReadCloser{r},则关闭函数显示如下:
func (rc sectionReadCloser) Close() error {
return nil
}
seciontReadCloser 的关闭函数没有任何作用。 我发现它确实返回了 sectionReadCloser{r}。 我想我应该关闭文件,但我仍然想知道它什么时候会返回 os.Open。我将继续阅读源代码并尝试理解它。如果有人给我一些建议,那就太好了。
【问题讨论】:
标签: go file-upload go-gin