神奇的go语言(image网站开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

有过python web开发经验的朋友,相信对它的便利性肯定印象非常深刻。其实利用go语言对web网站进行开发也是非常容易的一件事情。之前我对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网站开发)

时间: 2024-10-28 16:15:38

神奇的go语言(image网站开发)的相关文章

主流网站开发语言

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和Visual BASIC类似,可以像SSI(Server Side Include)那样把后台脚本代码内嵌到HTML页面中.虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题.目前在微软的 .net 战略中新推出的ASP.net 借鉴了Java技术的优点,使用C Sharp (C#) 语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点.但是,使用ASP/ASP.n

微软C#6.0语言OOP面向对象编程》《微软ASP.NET\MVC56网站开发》《微软Web服务\WCF\Web API3.0课程视频》

最新<微软C#6.0语言OOP面向对象编程><微软ASP.NET\MVC56网站开发><微软Web服务\WCF\Web API3.0课程视频>下载 下载链接:http://pan.baidu.com/s/1bnjJQnd 密码:36ji 微软与开源实战训练营QQ群:  203822816微软MSDN俱乐部QQ群:  29754721,

CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较

一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一)  网站开发语言之ASP: ASP(Active Server Pages)是微软平台下的动态网页技术.Microsoft提出的ASP概念,使设计交互式Web页面的技术有了长足的进步.它采用了三层计算结构,将Web服务器(逻辑层),客户端浏览器(表示层)以及数据库服务器(数据层)分开,具有良好的扩充性.

程序员提升网站开发效率的十个有效的工具

程序员提升网站开发效率的十个有效的工具: Git 之前也有过不少版本控制的工具.有好的,也有糟糕的.不过它们都或多或少地误入歧途了. 这时候Git出现了.一旦你用上了这个神奇的工具,很难相像你还会碰到比它更好的了. 还没用过Git? Stack Overflow 真的,我没在开玩笑.05年的时候你用google搜过技术资料吧?或者2000年那会儿拿yahoo搜过?又或者95年那阵上FidoNet去找答案?太可怕了.那会儿搜索出来的东西都是一些无聊透顶的论坛讨论,全是一些伪专家和脚本小子在叨叨一些

PHP+MYSQL网站开发环境架设

据我所知很多同学都想要试着学习一下PHP,无奈要在Windows下安装搭建好一个PHP环境来学习对于菜鸟同学来说繁琐程度足以让一半以上的人放弃,毕竟 Apache+PHP+MySQL 这3个程序配置起来比较麻烦,对于新手来说,要弄清楚那些配置还真是云里雾里.所以傻瓜式整合型的WAMP程序(Windows+Apache+PHP+MySQL)就出来了,这类软件可以让懒人和新手朋友们免除安装配置多款服务器软件的麻烦,让同学们更快地投入到PHP语言本身的开发与学习当中去. WAMP类的软件有许多,并且基

Asp.net网站开发

就现在来说网站开发大多数还是用的asp.net,其实网站开发也并不是很难,只要学好asp.net,再一步一步的分析网站的需求,就能写出来. 网站开发是制作一些专业性强的网站,比如说动态网页.ASP.PHP.JSP网页.而且网站开发一半是原创,网站制作可以用别人的模板.网站开发字面意思比制作有更深层次的进步,它不仅仅是网站美工和内容,它可能涉及到域名注册查询.网站的一些功能的开发.对于较大的组织和企业,网站开发团队可以由数以百计的人(web开发者).规模较小的企业可能只需要一个永久的或收缩的网站管

Java开源工具:网站开发工具清单

美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单. 他的语言平台是Java,开发项目是一个网站(还未上线).所用到的工具都是开源的,可以免费得到. 在目前的创业者之中,用Java作为网站开发语言的人似乎很少.这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事. 但是不可否认的是,Java的平台很成熟,各种工具包.工具库非常多,而且JVM虚拟机更是先进的技术.另外,Google App Engine平台提供免费的Ja

多语言版本网站建设数据库设计和考虑的因素

由于现在网站上动态应用日益增多,相当多的网站还会使用文件或者数据库来存储应用信息,因此如果文件或者数据库中存储的内容与语言相关时,还需要特别注意.对于存储在数据库中信息,可以采取以下几种方式支持多语言: 1,在数据库级别支持多语言:为每种语言建立独立的数据库,不同语言的用户操作不同的数据库. 2,在表级别支持多语言:为每种语言建立独立的表,不同语言的用户操作不同的表,但是它们在同一个数据库中. 3,在字段级别支持多语言:在同一个表中为每种语言建立独立的字段,不同语言的用户操作不同的字段,它们在同

学会了 C 语言真的可以开发出很多东西吗

原帖地址:知乎 一个人在知乎上问了这么一个问题,然后 涛吴 有了下面的回答. 马里奥碰到花朵就变身. 什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有.什么是花?一个 16 × 16 的正方形.什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色.什么是褐色?暂且说它是 0x887000 这个数字.什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠.什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 2