赞
踩
curl -X POST -F "file=@${file_path}" 127.0.0.1:9999/oss/upload
package main import ( "bytes" "fmt" "io/ioutil" "net/http" "strconv" "strings" "time" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" ) /* */ const ( EndPoint = "https://oss-cn-chengdu.aliyuncs.com" AccessKeyId = "LTAI5tG54xxxt1pwmknxx6" AccessSecret = "gCYMvWMsxxxxxnsvn24QxxxxEBdcvsm" BucketName = "alenza" UploadSuccess = 0 UploadFailed = 1 ) func init() { var err error oc.client, err = oss.New(EndPoint, AccessKeyId, AccessSecret) if err != nil { fmt.Println(err) return } } var oc osscurd type osscurd struct { client *oss.Client } func (o *osscurd) upload(ctx *gin.Context) { // 1. get fileHeader fileHeader, err := ctx.FormFile("file") if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } ts := time.Now().Unix() tsStr := strconv.FormatInt(ts, 10) before, after, _ := strings.Cut(fileHeader.Filename, ".") newFileName := before + "_" + tsStr + "." + after // usage of bucket_file_name // 2. bucket exist, err := oc.client.IsBucketExist(BucketName) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } if !exist { if err := oc.client.CreateBucket(BucketName); err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } } bucketIns, err := oc.client.Bucket(BucketName) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } // 3. upload fd, err := fileHeader.Open() if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } fileBytes, err := ioutil.ReadAll(fd) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) return } if err = bucketIns.PutObject(newFileName, bytes.NewReader(fileBytes)); err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "code": UploadFailed, "msg": err.Error(), }) } else { ctx.JSON(http.StatusOK, gin.H{ "code": UploadSuccess, "msg": fileHeader.Filename + " upload success! object key: " + newFileName, }) return } } func main() { e := gin.Default() e.POST("/oss/put", oc.upload) e.Run(":9999") }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。