博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
惊人go语言(image网站开发)
阅读量:6476 次
发布时间:2019-06-23

本文共 2214 字,大约阅读时间需要 7 分钟。

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

    有过python web开发经验的朋友。相信对它的便利性肯定印象很深刻。

事实上利用go语言对web站点进行开发也是很easy的一件事情。

之前我对web开发的经验也为0。可是使用go语言之后,你能够在最短的时间内搭建一个站点。

  

    为了学习的方便。大家能够直接从github上下载到本篇博客谈到的全部代码。同一时候,文章中的代码部分引用了《go语言编程》中的代码内容,在此一并表示感谢。本次内容的地址在。有兴趣的同学能够下载看一下。

    从文件夹上看,代码的内容很简单。picture.go包括了全部的交互代码,list.html和upload.html则包括了使用到的模板文件。而uploads文件夹则保存了全部上传的image文件。

    首先看看picture.go代码内容,

package mainimport "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内容有哪些?

Uploader
Choose an image to upload:
   

   有过前端开发经验的朋友肯定一眼就看出来了,这事实上就是个简单的登录上传页面。那么list.html又是什么东西呢? 

List
    {
    {range $.images}}

id={

{.|urlquery}}"> {
{.|html}} </a> </li> {
{end}} </ol> </body> </html>

 

    上面的网页与其说是一个网页。倒不如说是一个模板。由于全部的images内容事实上都要从外界进行传递的,而这全部的内容才会构成一个真正的网页。不知道我说清晰了没有。

    上面的站点简单而清晰,有兴趣的朋友能够好好看一看。

    

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
暴力 BestCoder Round #41 1001 ZCC loves straight flush
查看>>
航院5538:House Building
查看>>
【CSS系列】图像映射
查看>>
【Spring源码分析系列】加载Bean
查看>>
Selenium获取input值的两种方法:WebElement.getAttribute("value")和WebElement.getText()
查看>>
elasticsearch安装与使用(2)-- centos7 安装测试的集群工具elasticsearch head
查看>>
大数据(12) - Scala安装与IDE相关配置
查看>>
virtualenv的使用
查看>>
1068. 万绿丛中一点红(20)
查看>>
WCF -- Duplex双工通信
查看>>
c# 扩展方法奇思妙用基础篇九:Expression 扩展
查看>>
从C到iOS基础知识各阶段的书籍及提高实战图书推荐
查看>>
原型链上的call方法集合
查看>>
深入研究HTML5实现图片压缩上传
查看>>
2016-7-12
查看>>
HDU 1698
查看>>
UCOS-III API函数
查看>>
EBS中加载FORM使用的JavaBean的JAR包
查看>>
c++ override 关键字
查看>>
LinqToXML
查看>>