a function which retruns the content type of the given file by sniffing out some bytes of the file
/*
GetFileContentType returns the content type of given file by sniffing out fist 512 bytes of the file
Use the net/http package's handy DectectContentType function.
Always returns a valid content-type by returning "application/octet-stream" if no others seemed to match.
It also retruns error, if any.
*/
func GetFileContentType(file *os.File) (string, error) {
// Only the first 512 bytes are used to sniff the content type.
buffer := make([]byte, 512)
_, err := file.Read(buffer)
if err != nil {
return "", err
}
contentType := http.DetectContentType(buffer)
return contentType, nil
}