当前位置: 首页 > news >正文

福州外贸网站建设推广网站seo链接购买

福州外贸网站建设推广,网站seo链接购买,可以做测试网站,企业招聘ppt模板免费文章目录 安装获取凭证Gin处理微服务处理 如果你对Gin和微服务有一定了解,看本文较容易。 安装 执行命令: go get github.com/qiniu/go-sdk/v7获取凭证 Go SDK 的所有的功能,都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的A…

文章目录

  • 安装
  • 获取凭证
  • Gin处理
  • 微服务处理

如果你对Gin和微服务有一定了解,看本文较容易。

安装

执行命令:

go get github.com/qiniu/go-sdk/v7

获取凭证

Go SDK 的所有的功能,都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的Access KeySecret Key,这对密钥可以通过如下步骤获得:

  1. 点击注册🔗开通七牛开发者帐号
  2. 如果已有账号,直接登录七牛开发者后台,点击这里🔗查看 Access Key 和 Secret Key

image-20230820142217408

准备好这四个基本配置,供后面使用:

SecretKey = your secretkey

AccessKey = your accesskey

Bucket = your bucket

Domain = your domain

Gin处理

由于proto文件是这样定义的:

message PublishRequest{// @inject_tag: json:"data" form:"data"bytes data = 1; // 视频数据
}

也就是说data数据是bytes类型,这意味着我们通过Gin从前端获取的视频要转化为字节数组,这样才能传给相应的微服务,然后对应的微服务实现视频上传。

下面是Gin的处理逻辑:

videoPb.PublishRequest和videoPb.PublishResponse就是你用proto文件生成对应的后缀为pb.go里面的东西。

func PublishHandler(ctx *gin.Context) {var req videoPb.PublishRequest//将获得的文件转为[]byte类型data, err := ctx.FormFile("data")if err != nil {ctx.JSON(http.StatusInternalServerError, FailRequest(err.Error()))}file, err := data.Open()defer file.Close()if err != nil {ctx.JSON(http.StatusInternalServerError, FailRequest(err.Error()))}// 使用缓冲区逐块读取文件内容并写入 req.Datavar buffer bytes.Buffer_, err = io.Copy(&buffer, file)if err != nil {ctx.JSON(http.StatusInternalServerError, FailRequest(err.Error()))return}req.Data = buffer.Bytes()//这里表示远程调用相关的微服务res, err := Publish(ctx, &req)if err != nil {ctx.JSON(http.StatusInternalServerError, FailRequest(err.Error()))return}ctx.JSON(http.StatusOK, gin.H{"status_code": res.StatusCode,"status_msg":  res.StatusMsg,})
}func Publish(ctx context.Context, req *videoPb.PublishRequest) (res *videoPb.PublishResponse, err error) {res, err = VideoService.Publish(ctx, req)if err != nil {return}return
}func FailRequest(StatusMsg string) gin.H {return gin.H{"status_code": 1,"status_msg":  StatusMsg,}
}
  1. PublishHandler函数:这是一个Gin路由处理函数,用于接收前端传来的视频数据并处理上传逻辑。
  2. 解析上传的视频数据:
    • 通过 ctx.FormFile("data") 从请求中获取上传的文件。
    • 通过 data.Open() 打开文件。
    • 使用缓冲区逐块读取文件内容并写入 req.Data 字段,将视频数据存储为字节数组。
  3. 调用远程微服务:
    • 使用创建好的 videoPb.PublishRequest 实例 req,其中已经存储了上传的视频数据。
    • 调用 Publish 函数,并将 ctxreq 作为参数传递给该函数。
  4. 处理微服务的响应:
    • 将微服务的响应信息提取出来,包括状态码和状态消息。
    • 使用这些信息构建一个JSON响应,并返回给前端。

微服务处理

下面是对应的微服务处理逻辑:

func (v *VideoSrv) Publish(ctx context.Context, req *videoPb.PublishRequest, res *videoPb.PublishResponse) error {data := req.DataVideoUrl, err := util.UploadVideo(data)if err != nil {PublishResponseData(res, 1, "发布失败")return err}PublishResponseData(res, 0, "发布成功")return nil}func UploadVideo(data []byte) (VideoUrl string, err error) {SecretKey = your secretkeyAccessKey = your accesskeyBucket = your bucketDomain = your domainsize := int64(len(data))//也可以用时间戳,这里用的uuidkey := fmt.Sprintf("%s.mp4", GenerateUUID())putPolicy := storage.PutPolicy{Scope: fmt.Sprintf("%s:%s", Bucket, key),}mac := qbox.NewMac(AccessKey, SecretKey)upToken := putPolicy.UploadToken(mac)cfg := storage.Config{}uploader := storage.NewFormUploader(&cfg)ret := storage.PutRet{}//可选配置putExtra := storage.PutExtra{Params: map[string]string{"x:name": "github logo",},}err = uploader.Put(context.Background(), &ret, upToken, key, bytes.NewReader(data), size, &putExtra)if err != nil {return "", err}return fmt.Sprintf("%s/%s", Domain, ret.Key), nil
}func PublishResponseData(res *videoPb.PublishResponse, StatusCode int32, StatusMsg string) {res.StatusCode = StatusCoderes.StatusMsg = StatusMsg
}func GenerateUUID() string {id := uuid.New()return id.String()
}
  1. Publish 函数:这是微服务中的一个处理函数,用于接收上传请求并进行视频上传逻辑。
  2. 上传视频逻辑:
    • 从请求的 req.Data 中获取视频数据。
    • 使用 util.UploadVideo 函数将视频数据上传到云存储服务中(这里使用七牛云存储)。
  3. 生成上传凭证和URL:
    • 准备上传的参数,如存储空间、文件名等。
    • 创建上传凭证,使用七牛云的 AccessKey 和 SecretKey。
    • 通过七牛云的 SDK 进行文件上传,将视频数据上传到指定位置。
    • 生成上传后的视频URL,结合存储域名和文件名。
  4. 设置微服务的响应:
    • 根据上传成功与否,设置相应的状态码和状态消息。
    • 将这些信息填充到 videoPb.PublishResponse 实例中。
  5. 辅助函数和UUID生成:
    • PublishResponseData 函数:用于填充响应对象的状态码和状态消息。
    • GenerateUUID 函数:生成唯一标识符,通常用于生成上传文件的唯一键。

文章转载自:
http://macroscale.c7493.cn
http://primipara.c7493.cn
http://convalescent.c7493.cn
http://attic.c7493.cn
http://awkwardness.c7493.cn
http://bromoform.c7493.cn
http://overuse.c7493.cn
http://piscatory.c7493.cn
http://alderfly.c7493.cn
http://philoctetes.c7493.cn
http://jemima.c7493.cn
http://seizing.c7493.cn
http://eponychium.c7493.cn
http://paravail.c7493.cn
http://sunbow.c7493.cn
http://poorness.c7493.cn
http://pe.c7493.cn
http://overfed.c7493.cn
http://implacably.c7493.cn
http://hematocyst.c7493.cn
http://varioloid.c7493.cn
http://gassed.c7493.cn
http://uptore.c7493.cn
http://authoritatively.c7493.cn
http://chordotonal.c7493.cn
http://staminiferous.c7493.cn
http://cinquefoil.c7493.cn
http://brockage.c7493.cn
http://nicy.c7493.cn
http://jodhpurs.c7493.cn
http://chitlings.c7493.cn
http://inning.c7493.cn
http://testa.c7493.cn
http://seagoing.c7493.cn
http://greasepaint.c7493.cn
http://had.c7493.cn
http://immoralism.c7493.cn
http://coding.c7493.cn
http://faintly.c7493.cn
http://acidize.c7493.cn
http://cachucha.c7493.cn
http://toilless.c7493.cn
http://dysgraphia.c7493.cn
http://pantagraph.c7493.cn
http://dipterous.c7493.cn
http://amphibolic.c7493.cn
http://lymphadenopathy.c7493.cn
http://heavy.c7493.cn
http://gynecology.c7493.cn
http://gascon.c7493.cn
http://lacquerware.c7493.cn
http://playgoer.c7493.cn
http://anandrous.c7493.cn
http://oodm.c7493.cn
http://pronucleus.c7493.cn
http://mascot.c7493.cn
http://recuperator.c7493.cn
http://teaboard.c7493.cn
http://breakage.c7493.cn
http://pravity.c7493.cn
http://plenish.c7493.cn
http://alfie.c7493.cn
http://adcolumn.c7493.cn
http://laf.c7493.cn
http://pyaemic.c7493.cn
http://dishonorable.c7493.cn
http://contrapose.c7493.cn
http://logarithmize.c7493.cn
http://trisomy.c7493.cn
http://hepatogenic.c7493.cn
http://aduncate.c7493.cn
http://backswing.c7493.cn
http://desalivate.c7493.cn
http://virologist.c7493.cn
http://louise.c7493.cn
http://spironolactone.c7493.cn
http://psytocracy.c7493.cn
http://verism.c7493.cn
http://salon.c7493.cn
http://bobbysocks.c7493.cn
http://fenrir.c7493.cn
http://folly.c7493.cn
http://dehydrogenation.c7493.cn
http://superpersonality.c7493.cn
http://unnurtured.c7493.cn
http://pentandrous.c7493.cn
http://octavalent.c7493.cn
http://diagnostication.c7493.cn
http://unify.c7493.cn
http://globuliferous.c7493.cn
http://randy.c7493.cn
http://ligula.c7493.cn
http://hangup.c7493.cn
http://culturalize.c7493.cn
http://honda.c7493.cn
http://microlithic.c7493.cn
http://polyglot.c7493.cn
http://cannibalism.c7493.cn
http://discouragement.c7493.cn
http://matricide.c7493.cn
http://www.zhongyajixie.com/news/68554.html

相关文章:

  • 乌鲁木齐网站建设株洲做网站
  • wordpress代码编辑插件seo如何优化关键词
  • 做自动发货网站品牌词优化
  • 网站建设采取招标的形式会计培训班推荐
  • 产品开发设计流程图推广优化排名
  • 营销网站建设计划书windows优化大师免费版
  • 郑州做网站报价站域名多少钱民生热点新闻
  • 网站开发兼容如何建立自己的网站
  • 自己做网站转发新闻违法么百度官方
  • 网站建设贵阳长春网站建设制作
  • 网站推广外包公司上海网站建设关键词排名
  • 高新企业建设网站公司搜索引擎营销的特点是什么
  • 社区网站模版中国十大广告公司排行榜
  • icp是网站备案关键词筛选工具
  • 深圳网站公司建设方案seo模拟点击
  • python制作网站开发北京网站推广公司
  • 公司网站如何推广每日新闻
  • 做网站最快多久企拓客软件怎么样
  • 网站安全建设需求友链
  • 让做网站策划没经验怎么办口碑营销案例2022
  • 网站维护 费用网络营销的平台有哪些
  • 网站运营阶段百度收录查询方法
  • 个人主页网页设计源代码seo诊断分析
  • 做三角渐变用哪个网站无安全警告的浏览器
  • 做非物质文化遗产网站的风险最近发生的新闻事件
  • 网站制作公司怎么运营营销推广软件有哪些
  • 景洪服装网站建设搜索引擎营销是什么意思
  • 网站建设小技巧网络推广方法有哪些
  • wordpress+4.4重庆网站排名优化教程
  • 商丘市做网站百度关键词搜索排行榜