标签:提示符 maxlength list reset image test 效果 max space
二维码能够说已经深深的融入了我们的生活其中。到处可见它的身影;但通常我们都是去扫二维码,
曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人。
这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示怎样把它公布到云平台上,
让每一个人都能够通过网络訪问使用它。
Google在http://chart.apis.google.com 上提供了一个将表单数据自己主动转换为图表的服务。
只是,该服务非常难交互, 由于你须要将数据作为查询放到URL中。
此程序为一种数据格式提供了更好的的接口: 给定一小段文本。
它将调用图表server来生成二维码(QR码)。这是一种编码文本的点格矩阵。
该图像可被你的手机摄像头捕获。并解释为一个字符串,比方URL,
这样就免去了你在狭小的手机键盘上键入URL的麻烦。
在文本框中输入一个URL,如(http://blog.csdn.net/testcs_dn)。点击Show QR,会生成一张二维码的图片
对 HTML、CSS 、JavaScript 和Go语言的基本了解。
我提供了全部必要代码,但对这些技术的基本了解有助于您理解有关的细节。
假设您没还有Go语言的本地执行环境,该过程请參考:《Go语言入门》怎样在Windows下安装Go语言编程环境
进入您的应用程序,点击左側的開始编码,在右側点击“下载起动器代码”。
在Go的$GOROOT或$GOPATH文件夹下创建一个文件夹。将下载后的起动器代码解压到刚创建的文件夹下,
比如我的是: C:\Go\src\web1
打开文件夹下的app.go文件。将文件的内容替换为以下的代码:
package main import ( "log" "net/http" "os" "html/template" //for extracting service credentials from VCAP_SERVICES //"github.com/cloudfoundry-community/go-cfenv" ) const ( DEFAULT_PORT = "8080" ) var templ = template.Must(template.New("qr").Parse(templateStr)) func main() { var port string if port = os.Getenv("PORT"); len(port) == 0 { port = DEFAULT_PORT } http.HandleFunc("/", helloworld) log.Printf("Starting app on port %+v\n", port) http.ListenAndServe(":"+port, nil) } func helloworld(w http.ResponseWriter, req *http.Request) { templ.Execute(w, req.FormValue("s")) } const templateStr = ` <html> <head> <title>QR Link Generator</title> </head> <body> {{if .}} <img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl={{.}}" /> <br> {{.}} <br> <br> {{end}} <form action="/" name=f method="GET"><input maxLength=1024 size=70 name=s value="" title="Text to QR Encode"><input type=submit value="Show QR" name=qr> </form> </body> </html> `代码说明
main
之前的代码应该比較easy理解。
我们通过一个常量为server设置了默认端口。 模板变量 templ
正式有趣的地方。它构建的HTML模版将会被server执行并显示在页面中。
稍后我们将具体讨论。
main
函数解析了參数标志并使用我们讨论过的机制将 helloworld 函数绑定到server的根路径。然后调用 http.ListenAndServe
启动server。它将在server执行时处于堵塞状态。
helloworld
仅接受包括表单数据的请求,并为表单值 s
中的数据执行模板。
模板包 html/template
非常强大;该程序仅仅是浅尝辄止。 本质上。它通过在执行时将数据项中提取的元素(在这里是表单值)传给 templ.Execute
执行因而重写了HTML文本。
在模板文本(templateStr
)中,双大括号界定的文本表示模板的动作。
从 {{if .}}
到 {{end}}
的代码段仅在当前数据项(这里是点 .
)的值非空时才会执行。 也就是说,当字符串为空时,此部分模板段会被忽略。
其中两段 {{.}}
表示要将数据显示在模板中 (即将查询字符串显示在Web页面上)。HTML模板包将自己主动对文本进行转义, 因此文本的显示是安全的。
余下的模板字符串仅仅是页面载入时将要显示的HTML。假设这段解释你无法理解,请參考 文档 获得很多其它有关模板包的解释。
你最终如愿以偿了:以几行代码实现的,包括一些数据驱动的HTML文本的Webserver。 Go语言强大到能让非常多事情以短小精悍的方式解决。
你能够通过在命令行窗体执行命令:go install web1 来完毕编译。编译完毕后会在 C:\Go\bin 文件夹下生成web1的exe。
通过上面的方法编译后,双击执行就可以。
也能够在命令行下切换到文件所在的文件夹,比如:C:\Go\src\web1
然后执行:go run app.go
这时可能会弹出Windows防火墙的安全提示,点击同意訪问就可以。
在浏览器中訪问,查看效果,打开浏览器。输入:http://localhost:8080/,
在文本框中输入一个URL,如(http://blog.csdn.net/testcs_dn),点击Show QR,会生成一张二维码的图片
扫一扫这张二维码看看吧
登录到 Bluemix? 后,能够使用 cf push 命令来上传应用程序。
cf login -u ivu4e@qq.com -o ivu4e@qq.com -s ivu4e
4、发出 cf push 命令时,cf 命令行界面将提供使用 buildpack 来构建并执行应用程序的 Bluemix 环境的工作文件夹。
通过仪表板进入您刚刚创建的应用页面,点击左側的開始编码,右側顶部会显示:您的应用程序正在执行。 http://goqrcode.mybluemix.net
点击后面的链接訪问刚刚公布的应用。
在输入框中输入您想分享的URL。点击Show QRbutton就能够生成二维码图片了。
通过IBM的Bluemix云平台,我们能够轻松的将自己的应用共享到网络上;
创建Web应用之后会自己主动获得一个用来訪问应用的二级域名。
通过应用程序概述中的应用程序执行状况,能够方便的查看和管理应用执行状态;
这里通过一个小样例展示怎样将自己的应用公布到IBM的Bluemix云平台上,
怎样与Google在http://chart.apis.google.com 上提供了的图表服务交互。
假设您有更好的应用或想法,试试通过IBM的Bluemix云平台共享出来吧。
在云平台上基于Go语言+Google图表API提供二维码生成应用
标签:提示符 maxlength list reset image test 效果 max space
原文地址:http://www.cnblogs.com/llguanli/p/7392332.html