/** * @Auth:ShenZ * @Description: * @CreateDate:2022/06/15 12:57:55 */ package service import ( "fmt" "ginchat/utils" "io" "math/rand" "os" "strings" "time" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" "github.com/spf13/viper" ) func Upload(c *gin.Context) { UploadLocal(c) //UploadOOS(c) } //上传文件到本地 func UploadLocal(c *gin.Context) { w := c.Writer req := c.Request srcFile, head, err := req.FormFile("file") if err != nil { utils.RespFail(w, err.Error()) } suffix := ".png" ofilName := head.Filename tem := strings.Split(ofilName, ".") if len(tem) > 1 { suffix = "." + tem[len(tem)-1] } fileName := fmt.Sprintf("%d%04d%s", time.Now().Unix(), rand.Int31(), suffix) dstFile, err := os.Create("./asset/upload/" + fileName) if err != nil { utils.RespFail(w, err.Error()) } _, err = io.Copy(dstFile, srcFile) if err != nil { utils.RespFail(w, err.Error()) } url := "./asset/upload/" + fileName utils.RespOK(w, url, "发送图片成功") } //上传文件到阿里云服务 func UploadOOS(c *gin.Context) { w := c.Writer req := c.Request srcFile, head, err := req.FormFile("file") if err != nil { utils.RespFail(w, err.Error()) } suffix := ".png" ofilName := head.Filename tem := strings.Split(ofilName, ".") if len(tem) > 1 { suffix = "." + tem[len(tem)-1] } fileName := fmt.Sprintf("%d%04d%s", time.Now().Unix(), rand.Int31(), suffix) // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New(viper.GetString("oss.Endpoint"), viper.GetString("oss.AccessKeyId"), viper.GetString("oss.AccessKeySecret")) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写存储空间名称,例如examplebucket。 bucket, err := client.Bucket(viper.GetString("oss.Bucket")) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 依次填写Object的完整路径(例如exampledir/exampleobject.txt)和本地文件的完整路径(例如D:\\localpath\\examplefile.txt)。 err = bucket.PutObject(fileName, srcFile) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } url := "http://" + viper.GetString("oos.Bucket") + "." + viper.GetString("oos.EndPoint") + "/" + fileName utils.RespOK(w, url, "发送图片成功") }