file.Seek(0, io.SeekStart)
go
package main
import (
"bytes"
"encoding/csv"
"fmt"
"io"
"mime/multipart"
"os"
)
func processFile(file multipart.File) error {
// 先读取文件内容
data, err := io.ReadAll(file)
if err != nil {
return err
}
// 如果我们希望使用 csv.Reader,先重置文件指针
file.Seek(0, io.SeekStart) // 将指针重新移动到开头
// 然后可以用 csv.NewReader 读取
reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
return err
}
for _, record := range records {
fmt.Println(record)
}
return nil
}
// 这里是一个示例,实际场景中 file 是来自 HTTP 请求的 multipart.File
func main() {
file, err := os.Open("example.csv") // Replace with actual file from multipart
if err != nil {
panic(err)
}
defer file.Close()
err = processFile(file)
if err != nil {
panic(err)
}
}
package main
import (
"bytes"
"encoding/csv"
"fmt"
"io"
"mime/multipart"
"os"
)
func processFile(file multipart.File) error {
// 先读取文件内容
data, err := io.ReadAll(file)
if err != nil {
return err
}
// 如果我们希望使用 csv.Reader,先重置文件指针
file.Seek(0, io.SeekStart) // 将指针重新移动到开头
// 然后可以用 csv.NewReader 读取
reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
return err
}
for _, record := range records {
fmt.Println(record)
}
return nil
}
// 这里是一个示例,实际场景中 file 是来自 HTTP 请求的 multipart.File
func main() {
file, err := os.Open("example.csv") // Replace with actual file from multipart
if err != nil {
panic(err)
}
defer file.Close()
err = processFile(file)
if err != nil {
panic(err)
}
}