在 Go 中,您可以使用 mime
包来根据文件的扩展名获取 MIME 类型(Content-Type)。如果您想要根据文件的内容来获取 Content-Type,可以使用 http.DetectContentType
函数。以下是一个示例代码,展示了如何根据文件的扩展名和文件内容来获取 Content-Type。
根据文件扩展名获取 Content-Type
package main
import (
"fmt"
"mime"
)
func getContentTypeByExtension(ext string) string {
contentType := mime.TypeByExtension(ext)
return contentType
}
func main() {
ext := ".png"
contentType := getContentTypeByExtension(ext)
fmt.Printf("MIME type for %s: %s\n", ext, contentType)
}
根据文件内容获取 Content-Type
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func getContentTypeByFile(filePath string) (string, error) {
data, err := ioutil.ReadFile(filePath)
if err != nil {
return "", err
}
contentType := http.DetectContentType(data)
return contentType, nil
}
func main() {
filePath := "example.png" // 替换为你的文件路径
contentType, err := getContentTypeByFile(filePath)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("MIME type for %s: %s\n", filePath, contentType)
}
解释
- 根据文件扩展名:使用
mime.TypeByExtension()
方法可以通过提供的文件扩展名获取 MIME 类型。 - 根据文件内容:使用
http.DetectContentType()
方法可以通过读取文件内容并分析数据前512字节,以检测其 MIME 类型。
以上两种方法各有应用场景,根据您的需求选择合适的方法即可。
内容由零声教学AI助手提供,问题来源于学员提问