`

go web

    博客分类:
  • go
go 
阅读更多
package main
import (
"io"
"io/ioutil"
"log"
"os"
"net/http"
)

const (
UPLOAD_DIR = "uploads"
)
func uploadHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
io.WriteString(w, "<html><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></html>")
return
}

if r.Method == "POST" {
f, h, err := r.FormFile("image")
if err != nil {
http.Error(w, err.Error(),
http.StatusInternalServerError)
return
}
filename := h.Filename
defer f.Close()
t, err := os.Create(UPLOAD_DIR + "/" + filename)
if err != nil {
log.Println("create dir has error");

http.Error(w, err.Error(),
http.StatusInternalServerError)
return
}
defer t.Close()
if _, err := io.Copy(t, f); err != nil {
http.Error(w, err.Error(),
http.StatusInternalServerError)
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
if exists := isExists(imagePath);!exists {
http.NotFound(w, r)
return
}
w.Header().Set("Content-Type", "image")
http.ServeFile(w, r, imagePath)

}

func isExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
return os.IsExist(err)
}


func listHandler(w http.ResponseWriter, r *http.Request) {
fileInfoArr, err := ioutil.ReadDir("uploads")
if err != nil {
http.Error(w, err.Error(),
http.StatusInternalServerError)
return
}
var listHtml string

for _, fileInfo := range fileInfoArr {
imgid := fileInfo.Name()
listHtml += "<li><a href=\"/view?id="+imgid+"\">imgid</a></li>"
}
io.WriteString(w, "<html><ol>"+listHtml+"</ol></html>")
}


func main() {
http.HandleFunc("/", listHandler)

http.HandleFunc("/upload", uploadHandler)
http.HandleFunc("/view", viewHandler)

err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err.Error())
}
}
分享到:
评论

相关推荐

    重磅!《Go Web编程实战派从入门到精通》随书源码开源啦,Go语言-Web-goWebActualCombat.zip

    其开源的随书源码库名为"Go语言-Web-goWebActualCombat",压缩包内的主要内容是goWebActualCombat-master目录,这代表了一个完整的Go语言Web应用项目。通过这个项目,读者可以深入学习Go语言在构建Web应用时的各种...

    golang开发web应用示例(v0.03)

    标题“golang开发web应用示例(v0.03)”表明这是一个关于Go语言Web开发的实践项目,版本号为v0.03,可能意味着这是项目早期的一个迭代,包含了基本的功能和结构。在这个项目中,我们可以学习到如何从零开始构建一个...

    go web 编程

    下面将详细阐述Go语言Web编程的核心知识点,以及你可能会在教程资源中遇到的关键概念。 1. **Go语言基础**:在学习Go Web编程之前,理解Go语言的基础是必不可少的。Go语言由Google开发,其特性包括静态类型、垃圾...

    新手GoWeb编程PDF

    《新手GoWeb编程PDF》是一份专为初学者设计的Go语言Web开发教程,它涵盖了从基础到进阶的全面内容,旨在帮助读者快速掌握Go语言及其在Web开发中的应用。Go语言,简称GoLang,是由Google公司开发的一种静态类型的、...

    GoWeb编程pdf绝对可下载

    这本书是GOweb编程的电子版,就是那本新加坡的,内容清晰,目录齐全,就是内容排版有一丁点问题。绝逼可下载。

    《go web编程》 (pdf格式 电子书)

    在Go语言Web编程中,首要涉及的基础知识是Go语言的基本语法。这包括变量、常量、数据类型(如整型、浮点型、字符串、布尔型)、流程控制(如if-else、for、switch语句)、函数、结构体与指针等。理解这些基础知识是...

    go语言web开发

    ### Go语言Web开发知识点概述 #### 一、Go语言简介 Go语言,也称为Golang,是由Google设计的一种静态类型的编程语言。它以其简洁的语法、高效的性能以及强大的并发处理能力而著称,在网络编程领域得到了广泛的应用...

    高清go web编程英文原版

    《高清Go Web编程英文原版》是一本专为Go语言Web开发人员精心编写的经典教程。这本书详尽地探讨了如何使用Go语言构建高效、可扩展的Web应用程序。Go语言,由Google公司设计,以其简洁的语法、高效的性能以及内置的...

    golang web编程英文版

    《Golang Web编程》英文版是一本专门针对使用Go语言进行Web开发的图书,适合对Go语言有一定了解并希望深入Web开发的读者。Go语言,由Google开发,以其简洁的语法、高效的性能以及内置的并发支持,近年来在Web开发...

    Go Web Programming.[新加坡]郑兆雄(PDF带书签.英文原版)

    这本书以英文原版呈现,旨在为读者提供深入且全面的Go语言Web编程知识。 Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。它以其简洁的语法、高效的性能以及对...

    GoWeb编程GoWeb编程

    Go语言,也称为Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言,特别适合构建高性能的Web服务。下面将详细讨论GoWeb编程中的关键知识点。 1. **Go语言基础**: - 语法特性:...

    Go web语言学习(Golang)

    标题:“Go web语言学习(Golang)” 描述:“go语言,golang,Go是一种有表达力、简洁、清晰和有效率的编程语言。它的并行机制使其很容易编写多核和网络应用,而新。” Go语言,又称Golang,是一种静态类型、编译型...

    GoWeb进阶课程讲义.rar

    《GoWeb进阶课程讲义》是一份专为已经掌握Go语言基础的开发者...以上就是《GoWeb进阶课程讲义》中的主要学习内容,通过系统学习,开发者可以深化对Go语言Web开发的理解,提高开发效率,构建更稳定、更高效的Web应用。

    Go Web 编程.pdf

    Go Web 编程.pdf

    go web 项目开发脚手架

    # web 项目开发脚手架 ## 项目分层模式 ### MVC - Model:模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。 - View:视图代表模型包含的数据的可视化。 - Controller:控制器作用于模型...

Global site tag (gtag.js) - Google Analytics