惊人go语言(image网站开发)
【 声明:版权全部,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
有过python web开发经验的朋友。相信对它的便利性肯定印象很深刻。
事实上利用go语言对web站点进行开发也是很easy的一件事情。
之前我对web开发的经验也为0。可是使用go语言之后,你能够在最短的时间内搭建一个站点。
为了学习的方便。大家能够直接从github上下载到本篇博客谈到的全部代码。同一时候,文章中的代码部分引用了《go语言编程》中的代码内容,在此一并表示感谢。本次内容的地址在这。有兴趣的同学能够下载看一下。
从文件夹上看,代码的内容很简单。picture.go包括了全部的交互代码,list.html和upload.html则包括了使用到的模板文件。而uploads文件夹则保存了全部上传的image文件。
首先看看picture.go代码内容,
package main import "io"
import "log"
import "os"
import "net/http"
import "html/template"
import "io/ioutil" const (
UPLOAD_DIR = "./uploads"
) func uploadHandler (w http.ResponseWriter, r * http.Request) { if r.Method == "GET" { t, _ := template.ParseFiles("upload.html")
t.Execute(w, nil) }else { f, h, _ := r.FormFile("image") filename := h.Filename
defer f.Close() t, _ := os.Create(UPLOAD_DIR + "/" + filename)
defer t.Close() _, err := io.Copy(t, f)
if err != nil { return
} http.Redirect(w, r, "view? id=" + filename, http.StatusFound)
}
} func viewHandler(w http.ResponseWriter, r* http.Request) { imageId := r.FormValue("id")
imagePath := UPLOAD_DIR + "/" + imageId
w.Header().Set("Content-Type", "image")
http.ServeFile(w, r, imagePath)
} func listHandler(w http.ResponseWriter, r* http.Request) { fileInfoArr, _ := ioutil.ReadDir(UPLOAD_DIR) locals := make(map[string] interface{})
images := []string{} for _, fileInfo := range fileInfoArr { images = append(images, fileInfo.Name())
} locals["images"] = images t, _ := template.ParseFiles("list.html")
t.Execute(w, locals)
} func main() { http.HandleFunc("/upload", uploadHandler)
http.HandleFunc("/view", viewHandler)
http.HandleFunc("/", listHandler) err := http.ListenAndServe(":9090", nil)
if err != nil { log.Fatal("ListenAndServe: ", err.Error())
}
}
事实上这个站点主要就3个网页。一个是显示全部图片的索引。一个是图片显示,另外一个就是图片上传页面。
以下看看。upload.html内容有哪些?
<!doctype html>
<html> <head>
<meta charset = "utf-8">
<tilte> Uploader </title>
</head> <body>
<form method="post" action="/upload" enctype="multipart/form-data">
Choose an image to upload: <input name="image" type="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
有过前端开发经验的朋友肯定一眼就看出来了,这事实上就是个简单的登录上传页面。那么list.html又是什么东西呢?
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> List </title>
</head> <body>
<ol>
{{range $.images}}
<li><a href="/view? id={{.|urlquery}}"> {{.|html}} </a> </li>
{{end}} </ol>
</body> </html>
上面的网页与其说是一个网页。倒不如说是一个模板。由于全部的images内容事实上都要从外界进行传递的,而这全部的内容才会构成一个真正的网页。不知道我说清晰了没有。
上面的站点简单而清晰,有兴趣的朋友能够好好看一看。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
惊人go语言(image网站开发)的更多相关文章
- CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较
一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一) ...
- MVC5 网站开发实践 概述
目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目 MVC5 网站开发实践 2.后台管理 MVC5 网站开发实践 2.1.管理员登陆 MVC5 网站开发实践 2.2.管理 ...
- JSP网站开发基础总结《二》
有了上一篇的学习,我相信大家对于JSP一定有了一定的认识,从今天开始我们真正开启JSP模式,如果你有HTML的基础,那学起JSP来也就方便了很多了,首先JSP做为网站开发语言,它与HTML有很多相似的 ...
- JSP网站开发基础总结《一》
经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法.应用程序.网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结. 既然是动态网站开发, ...
- Mysql 与 php动态网站开发 入门教程
这个系列的教程由表单开始写,因为表单可以把数据库和web 之间的交互表现得很明显.提交表单 ,数据库记录注册信息. 本教程属于基础教程.大神请略过. 对于php和mysql之间的稳固性很 ...
- .net网站开发(设计):1.什么是MVC模式
好吧我知道,应该很少人一开始学网站开发就从MVC开始,但如果你已经理解了三层架构之类的,那直接尝试强大的微软MVC网站开发模式也是挺不错的. 但其实我们学校有个实验室,那些干进去的就算是大一的学生,也 ...
- 【PHP】Sublime下PHP网站开发指南
Sublime下PHP网站开发指南 作者:白宁超 2017年3月16日11:03:17 摘要:随着单位开发项目的需求,关于政务办公多年来一直使用php开发管理平台.笔者早年asp开发经验算是有些帮助, ...
- 基于Struts2+Hibernate的朋友圈留言网站开发的质量属性
在课堂上我们了解了质量高于功能,质量属性是指影响质量的相关因素,是对质量的描述.现在我们对基于SSH的交友网站开发的质量属性可以从以下几个方向进行分析: (1)可用性: 当错误发生时,使用可用性战术进 ...
- HTML+CSS网站开发兵书
<HTML+CSS网站开发兵书> 基本信息 作者: 高洪涛 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121212369 上架时间:2013-8-26 出版日期:2 ...
- 网站开发只需数小时?Meteor 说这才是未来
原文: http://www.geekpark.net/topics/211573/ 那个想要挑战过去数十年沿用至今的网站开发模式的新势力来了. Meteor 是从 YC 孵化而出的现代网站开发平台, ...
随机推荐
- Big Event in HDU(杭电1171)(多重背包)和(母函数)两种解法
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 怎么样excel其产生的条形码(10分钟的时间excel)从而出现了条形码
现在快递行业.京东购物,这样一来,使用条码管理,因此,如何在你的excel其中还生产商品条码管理它?其实很easy,4步骤学会!10分钟搞定. 1.从网址如下.下载字体, 2.双击安装字体. 3,在e ...
- 使用Xamarin在Visual Studio中开发Android应用
原文:使用Xamarin在Visual Studio中开发Android应用 本文使用的环境是Windows 8 Visual Studio 2012.2 1.下载Xamarin http://xam ...
- 面向对象的方式进行数据交换网络之间的差异--无缝切换的发展到单机游戏C/S模式
上一页本文描述描述有关数据的发展过程之间的差异支撑点,这里展示的另一个特点:无缝切换的发展,以独立C/S模式 一般C/S模式都面临一个问题: 就是开发过程中的调试难题,由于涉及到client和服务端相 ...
- Blink: Chromium的新渲染引擎
编自http://www.chromium.org/blink 关于blink Google Chrome/Chromium 从创始至今一直使用 WebKit(WebCore) 作为 HTML/CSS ...
- C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!!
原文:C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!! 一般我们在开发Windows Phone 8 时,会考虑到各国语言的问题,但是你有想过吗?用实体手机 ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- VS2010中使用CL快速 生成DLL的方法
方案一: 1.命令行中输入cl example.cpp,生成example.obj和example.lib文件.有可能还会提示“没有入口点”的错误.这是因为我们的CPP中是要生成dll文件的,并没有m ...
- 解决win10 iot VS编程出现的无法引用错误
使用NuGet安装 Microsoft.NETCore 5.0 安装 Microsoft.NETCore
- 最佳新秀SSH十六Struts2它是如何工作的内部
前面说完了Spring.Hibernate,非常自然今天轮到struts了.struts的核心原理就是通过拦截器来处理client的请求,经过拦截器一系列的处理后,再交给Action.以下先看看str ...