1、获取图片长宽 import( "image" _ "image/gif" _ "image/jpeg" _ "image/png" ) src,err:=file.Open() img,ext,err:=image.DecodeConfig(src) fmt.Println("width:",img.Width) fmt.Println("height",img.Height) fmt.Println("后缀",ext) //不包含. 2、获取图片类型 安装 go get github.com/shamsher31/goimgtype // 图片路径 var file_name string = `./test.png` // 读取图片 old_file, err1 := os.Open(file_name) if err1 != nil { panic(err) } defer old_file.Close() // 获取图片的类型 datatype, err2 := imgtype.Get(file_name) if err2 != nil { println(`不是图片文件`) } else { // 根据文件类型执行响应的操作 switch datatype { case `image/jpeg`: println(`这是JPG文件`) case `image/png`: println(`这是PNG文件`) } } 七牛云上传 type MyPutRet struct { Key string Hash string Fsize int Bucket string Name string } func upQiniu(file *multipart.FileHeader, ctx *gin.Context) { putPolicy := storage.PutPolicy{ Scope: Conf.Qiniu.Bucket, } src, err := file.Open() if err != nil { return } img, ext, err := image.DecodeConfig(src) if err != nil { return } name1 := time.Now().Format("20060102150405") name2 := rand.Intn(1000) name := name1 + strconv.Itoa(name2) + "." + ext fmt.Println("name:", "upload/"+name) fmt.Printf("===a=w= %d= %d", img.Width, img.Height) src.Close() src, err = file.Open() if err != nil { return } defer src.Close() mac := qbox.NewMac(Conf.Qiniu.AccessKey, Conf.Qiniu.SecretKey) upToken := putPolicy.UploadToken(mac) fmt.Println("result===b") cfg := storage.Config{} formUploader := storage.NewFormUploader(&cfg) ret := MyPutRet{} putExtra := storage.PutExtra{} err = formUploader.Put(ctx, &ret, upToken, "upload/"+name, src, file.Size, &putExtra) if err != nil { fmt.Println(err) return } fmt.Println("ret.Key:", ret.Key) }