以下是一个简单的例子,使用 Golang Gin 框架将网络图片下载到 OSS 并校验大小和格式:

package main

import (
	"bytes"
	"fmt"
	"io"
	"io/ioutil"
	"mime/multipart"
	"net/http"
	"os"
	"path/filepath"

	"github.com/gin-gonic/gin"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	r := gin.Default()

	// 创建 oss client
	client, err := oss.New("your_endpoint", "your_access_key_id", "your_access_key_secret")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	// 获取 bucket
	bucket, err := client.Bucket("your_bucket_name")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	r.POST("/upload", func(c *gin.Context) {
		// 从请求中获取文件
		file, header, err := c.Request.FormFile("file")
		if err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}
		defer file.Close()

		// 校验文件大小和格式
		if header.Size > 1024*1024 {
			c.JSON(http.StatusBadRequest, gin.H{"error": "File size too large"})
			return
		}
		ext := filepath.Ext(header.Filename)
		if ext != ".jpg" && ext != ".jpeg" && ext != ".png" {
			c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid file format"})
			return
		}

		// 读取文件内容
		data, err := ioutil.ReadAll(file)
		if err != nil {
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}

		// 将文件上传到 oss
		objectKey := header.Filename
		err = bucket.PutObject(objectKey, bytes.NewReader(data))
		if err != nil {
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}

		c.JSON(http.StatusOK, gin.H{"success": true})
	})

	r.Run(":8080")
}

在上面的例子中,我们首先创建了 oss client 和 bucket。然后,我们定义了一个 POST 路由,从请求中获取文件并校验大小和格式。最后,我们将文件上传到 OSS。请注意,上面的例子中我们没有校验文件的内容,只是校验了文件的大小和格式。如果你需要校验文件的内容,请参考 OSS API 文档。

Golang Gin 框架: 下载网络图片到 OSS 并校验大小和格式

原文地址: https://www.cveoy.top/t/topic/lCsg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录