Golang : Find out mime type from bytes in buffer
Problem :
You are building an application that need to detect the MIME type of an object. Such as an email application that handles file attachment. How to find out the MIME type of an object or file ?
Solution :
Use net/http.DetectContentType()
function to detect the file or object MIME type. For example :
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
filename := os.Args[1]
if len(os.Args) != 2 {
fmt.Println("Missing filename argument")
fmt.Printf("Usage : %s filename\n", os.Args[0])
os.Exit(0)
}
fmt.Println(filename)
file, err := os.Open(filename)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
buff := make([]byte, 512)
_, err = file.Read(buff)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
filetype := http.DetectContentType(buff)
fmt.Println("File type or MIME type : ", filetype)
}
Sample output :
img.gif
File type or MIME type : image/gif
img.pdf
File type or MIME type : application/pdf
Reference :
See also : Golang : How to verify uploaded file is image or allowed file types
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+4.9k Fix yum-complete-transaction error
+9.8k Golang : How to delete element(data) from map ?
+21.1k Golang : Print leading(padding) zero or spaces in fmt.Printf?
+61.7k Golang : Convert HTTP Response body to string
+29.5k Golang : Calculate percentage change of two values
+5.9k Get Facebook friends working in same company
+18.7k Golang : How to count the number of repeated characters in a string?
+15.3k Golang : Generate QR codes for Google Authenticator App and fix "Cannot interpret QR code" error
+24.1k Golang : Storing cookies in http.CookieJar example
+16.9k Golang : How to log each HTTP request to your web server?
+12.1k Golang : Convert IPv4 address to packed 32-bit binary format
+13.8k Golang : package is not in GOROOT during compilation