| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package main
- import (
- "bytes"
- "encoding/hex"
- "fmt"
- "log"
- "os"
- "strconv"
- "strings"
- )
- var picMap map[string]string
- func init() {
- picMap = make(map[string]string)
- picMap["ffd8ffe0"] = "jpg"
- picMap["ffd8ffe1"] = "jpg"
- picMap["ffd8ffe8"] = "jpg"
- picMap["89504e47"] = "png"
- }
- func main() {
- file,err := os.Open("pic/type/test.jpeg")
- if err != nil {
- log.Fatal(err.Error())
- }
- defer file.Close()
- result := judgeType(file)
- fmt.Println("判断结果: ",result)
- }
- func judgeType(file *os.File) bool {
- buf := make([]byte, 20)
- n, _ := file.Read(buf)
- fileCode := bytesToHexString(buf[:n])
- for k,_ := range picMap {
- if strings.HasPrefix(fileCode, k) {
- return true
- }
- }
- return false
- }
- func bytesToHexString(src []byte) string {
- res := bytes.Buffer{}
- if src == nil || len(src) <= 0 {
- return ""
- }
- temp := make([]byte, 0)
- i, length := 100, len(src)
- if length < i {
- i = length
- }
- for j := 0; j < i; j++ {
- sub := src[j] & 0xFF
- hv := hex.EncodeToString(append(temp, sub))
- if len(hv) < 2 {
- res.WriteString(strconv.FormatInt(int64(0), 10))
- }
- res.WriteString(hv)
- }
- return res.String()
- }
|