123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package spiderutil
- import (
- "fmt"
- "strings"
- )
- var fileTypeMap map[string]string = map[string]string{
- "ffd8ffe000104a464946": "jpg", //JPEG (jpg)
- "89504e470d0a1a0a0000": "png", //PNG (png)
- "474946383961": "gif", //GIF (gif)
- "49492a00227105008037": "tif", //TIFF (tif)
- "424d228c010000000000": "bmp", //16色位图(bmp)
- "424d8240090000000000": "bmp", //24位位图(bmp)
- "424d8e1b030000000000": "bmp", //256色位图(bmp)
- "41433130313500000000": "dwg", //CAD (dwg)
- "3c21444f435459504520": "html", //HTML (html)
- "3c21646f637479706520": "htm", //HTM (htm)
- "48544d4c207b0d0a0942": "css", //css
- "696b2e71623d696b2e71": "js", //js
- "7b5c727466315c616e73": "rtf", //Rich Text Format (rtf)
- "38425053000100000000": "psd", //Photoshop (psd)
- "46726f6d3a203d3f6762": "eml", //Email [Outlook Express 6] (eml)
- "d0cf11e0a1b11ae10000": "doc", //MS Excel 注意:word、msi 和 excel的文件头一样
- "504b0304140006000800": "docx", //docx、pptx文件
- "504b03040a0000000000": "docx",
- //"d0cf11e0a1b11ae10000": "vsd", //Visio 绘图
- "5374616E64617264204A": "mdb", //MS Access (mdb)
- "252150532D41646F6265": "ps",
- "25504446": "pdf", //Adobe Acrobat (pdf) 25504446 255044462d312e350d0a
- "2e524d46000000120001": "rmvb", //rmvb/rm相同
- "464c5601050000000900": "flv", //flv与f4v相同
- "00000020667479706d70": "mp4",
- "49443303000000002176": "mp3",
- "000001ba210001000180": "mpg", //
- "3026b2758e66cf11a6d9": "wmv", //wmv与asf相同
- "52494646e27807005741": "wav", //Wave (wav)
- "52494646d07d60074156": "avi",
- "4d546864000000060001": "mid", //MIDI (mid)
- "504b0304140000000800": "zip",
- "504b0304140000000000": "zip",
- "526172211a0700": "rar", //526172211a0700 526172211a0700cf9073
- "235468697320636f6e66": "ini",
- "504b0304140008000800": "jar",
- "4d5a9000030000000400": "exe", //可执行文件
- "3c25402070616765206c": "jsp", //jsp文件
- "4d616e69666573742d56": "mf", //MF文件
- "3c3f786d6c2076657273": "xml", //xml文件
- "494e5345525420494e54": "sql", //xml文件
- "7061636b616765207765": "java", //java文件
- "406563686f206f66660d": "bat", //bat文件
- "1f8b0800000000000000": "gz", //gz文件
- "6c6f67346a2e726f6f74": "properties", //bat文件
- "cafebabe0000002e0041": "class", //bat文件
- "49545346030000006000": "chm", //bat文件
- "04000000010000001300": "mxp", //bat文件
- "504b0304140004000800": "xlsx", //xlsx文件
- //"d0cf11e0a1b11ae10000": "wps", //WPS文字wps、表格et、演示dps都是一样的
- "6431303a637265617465": "torrent",
- "6D6F6F76": "mov", //Quicktime (mov)
- "FF575043": "wpd", //WordPerfect (wpd)
- "CFAD12FEC5FD746F": "dbx", //Outlook Express (dbx)
- "2142444E": "pst", //Outlook (pst)
- "AC9EBD8F": "qdf", //Quicken (qdf)
- "E3828596": "pwl", //Windows Password (pwl)
- "2E7261FD": "ram", //Real Audio (ram)
- }
- func GetFileType(bt []byte) string {
- start := fmt.Sprintf("%x", bt[:10])
- for k, v := range fileTypeMap {
- if strings.HasPrefix(start, k) {
- return v
- }
- }
- return ""
- }
- func ConvertFileSize(s int) string {
- size := float64(s)
- var kb float64 = 1024
- var mb float64 = kb * 1024
- var gb float64 = mb * 1024
- if size >= gb {
- return fmt.Sprintf("%.1f GB", float64(size/gb))
- } else if size >= mb {
- f := float64(size / mb)
- if f > 100 {
- return fmt.Sprintf("%.0f MB", f)
- }
- return fmt.Sprintf("%.1f MB", f)
- } else if size >= kb {
- f := float64(size / kb)
- if f > 100 {
- return fmt.Sprintf("%.0f KB", f)
- }
- return fmt.Sprintf("%.1f KB", f)
- }
- return fmt.Sprintf("%d B", s)
- }
|