持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情。
Gin框架介绍
Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。可以这样理解:Gin就是一个封装好的http框架。
上传文件
总体流程:接收文件后,创建一个创建OSSClient实例,填写好相应的个人信息后,指定存储空间,就可以把本地的文件上传了。
接收文件
这里需要前端上传文件的表单的enctype属性指定值为multipart/form-data
最早的HTTP是不支持文件上传的,后面为了开发,Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据。因此发送post请求时候,form表单属性enctype共有二个值可选,这个属性管理的是表单的MIME编码:
①application/x-www-form-urlencoded(默认值) ②multipart/form-data 这里我们选择第二个编码方式。
代码:
func UpLoadFile(c *gin.Context) {
f, err := c.FormFile("data") // multipart/form-data
}
创建OSSClient实例
// 创建OSSClient实例。
Endpoint := "https://cn-shenzhen.oss.aliyuncs.com" // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
AccessKeyID := "xxxxx" //填写你的AccessKeyID
AccessKeySecret := "xxxxx" //AccessKeySecret
client, err := oss.New(Endpoint, AccessKeyID, AccessKeySecret)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
填写存储空间名称
// 指定bucket
bucket, err := client.Bucket("jxau7124") // 根据自己的填写
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
指定路径
依次填写Object的完整路径(例如exampledir/exampleobject.txt)和本地文件的完整路径(例如D:\localpath\examplefile.txt)。
// 将文件流上传至指定目录下
path := video.user.Name + "/" + video.title + file.Filename
err = bucket.PutObject(path, src)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
然后就可以进行访问了
访问路径:
https://桶名+oss-cn-服务器所在城市名+.aliyuncs.com/+存储路径
缩略图
一般我们上传完图片或者视频后想要得到一张缩略图,这一块oss也帮我们封装好了。
在图片的地址后面加上以下代码,可以生成缩略图
?x-oss-process=image/resize,m_fill,w_200,quality,q_60
在视频的地址后面加上以下代码,可以获取视频的封面
?x-oss-process=video/snapshot,t_7000,f_jpg,w_800,h_600,m_fast
注意:
resize ——调整大小
quality ——清晰度0-100
w_200,h_540——图片的宽度及高度