golang获取文件类型
时间: 2024-06-28 17:01:13 浏览: 256
golang简单获取上传文件大小的实现代码
在 Go 语言中,你可以使用 `mime` 包来获取文件类型。`mime` 包提供了 MIME 类型相关的常量和函数,包括检测文件类型。以下是一个简单的示例,展示如何获取文件的 MIME 类型:
```go
package main
import (
"fmt"
"mime"
"path/filepath"
)
func getFileType(filePath string) (string, error) {
fileInfo, err := filepath.Stat(filePath)
if err != nil {
return "", err
}
if fileInfo.Mode()&os.ModeSymlink == os.ModeSymlink {
return "", fmt.Errorf("file is a symlink, cannot determine type")
}
// 如果是目录,返回一个特定的类型(如"directory/folder")
if fileInfo.IsDir() {
return "application/octet-stream", nil
}
// 使用 mime.TypeByExtension 获取文件扩展名对应的 MIME 类型
mimeType := mime.TypeByExtension(filepath.Ext(filePath))
return mimeType, nil
}
func main() {
// 测试获取文件类型
filePath := "/path/to/your/file.txt" // 替换为你要检查的实际文件路径
mimeType, err := getFileType(filePath)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Printf("File type: %s\n", mimeType)
}
}
```
在这个示例中,`GetFileType` 函数首先获取文件信息,然后检查是否是符号链接或目录。如果不是,它会尝试根据文件扩展名获取 MIME 类型。注意,这个方法并不是绝对准确,因为有些文件可能没有明显的扩展名但还是有确定的 MIME 类型,或者某些文件的扩展名和实际类型不符。
阅读全文