怎样提升网站流量,毕业设计 做网站,河南省人事考试中心,网站开发与维护学什么前言 工作需要#xff0c;第一次使用 Go 来实战项目。 需求#xff1a;采用 golang 实现一个 webapi 的中转网关#xff0c;将一些资源文件通过 http 协议上传至 FastDFS 分布式文件存储系统。 一、FastDFS 与 golang 对接的代码 github#xff1a;https://github.com/weil… 前言 工作需要第一次使用 Go 来实战项目。 需求采用 golang 实现一个 webapi 的中转网关将一些资源文件通过 http 协议上传至 FastDFS 分布式文件存储系统。 一、FastDFS 与 golang 对接的代码 githubhttps://github.com/weilaihui/fdfs_client 源代码可以 clone 下来看看go 语法很简单 基本使用client_test.go 中有 test 案例代码 package mainimport (fmtio/ioutilgithub.com/weilaihui/fdfs_client
)func main() {ff, _ : ioutil.ReadFile(1.jpg)fmt.Println(image len:, len(ff))/*hosts : []string{10.0.1.32}port : 22122minConns : 10maxConns : 150connPool,_ : fdfs_client.NewConnectionPool(hosts, port, minConns, maxConns)*/path : client.conffds, error : fdfs_client.NewFdfsClient(path)if fds nil {fmt.Println(conn error: %s, error)var test stringfmt.Scanln(test)return}uploadResponse, err : fds.UploadByBuffer(ff, jpg)if uploadResponse nil {fmt.Println(upload error: %s, err)var test stringfmt.Scanln(test)return}fmt.Println(group name:, uploadResponse.GroupName)fmt.Println(remote file id:, uploadResponse.RemoteFileId)var test stringfmt.Scanln(test)
} 二、简单的 WebAPI 网关 beego 框架 go 圈很有名气国内大学著作考虑到这次工程较小暂未使用起来。 go 实现一个 api 网关也是相当的简单 package mainimport (fmtnet/http io/ioutil )func main() {http.HandleFunc(/, func(rw http.ResponseWriter, req *http.Request) {rw.Write([]byte(Hello go web))})http.HandleFunc(/upload, upload)http.ListenAndServe(localhost:8888, nil)fmt.Println(End.)
}func upload(rw http.ResponseWriter, req *http.Request) { fmt.Println(Header, req.Header)fmt.Println(Content-Type, req.Header.Get(Content-Type))fmt.Println(Body, req.Body)// 获取 body 的全部内容 /* len : req.ContentLength body : make([]byte, len) req.Body.Read(body) rw.Write([]byte(Response Body ....)) */ data, _ : ioutil.ReadAll(req.Body) } PS以上代码只是自己笔记使用因为刚入手 go 不熟仅供学习。 文件上传中转如果是较大的文件则采用将数据分片传输的方式进行。 转载于:https://www.cnblogs.com/loongsoft/p/9323235.html