`

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编程权威教程

    go web编程

    1.1 使用Go语言构建Web应用 3 1.1.1 Go与可扩展Web应用 4 1.1.2 Go与模块化Web应用 4 1.1.3 Go与可维护的Web应用 5 1.1.4 Go与高性能Web应用 5 1.2 Web应用的工作原理 6 1.3 HTTP简介 7 ...

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

    Go Web编程,go语言web编程,初学者可以看看 分享给大家

    Go Web 编程.pdf

    Go Web 编程.pdf

    Go Web编程 郑兆雄[带目录]pdf

    值得一提的是,本书在教授 Go Web 开发方法时,基本上只会用到 Go 语言自带的标准库,而不会用到任何特定的 Web 框架:这使得读者学习到的知识不会受到特定的框架所限制,即使将来有需要用到现成的框架又或者自行...

    Go Web Programming mobi

    Go Web Programming 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    GoWeb编程GoWeb编程

    GoWeb编程GoWeb编程

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

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

    Go Web Programming 无水印pdf

    Go Web Programming 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Go Web Programming(《Go Web 编程》英文版 作者:Sau Sheong Chang)

    Go Web Programming teaches you how to build scalable, high-performance web applications in Go using modern design principles. About the Technology The Go language handles the demands of scalable, ...

    go语言web编程

    2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的...

    Go Web开发进阶实战(gin框架)

    Go Web开发进阶实战(gin框架)课程,适用于Go语言初学者、掌握Go语言基础语法想学习进阶内容。 由在职程序员打造的Go语言实战课程体系,与你分享企业项目开发经验与技巧。真正做到课程有内容、有深度,并且老师讲...

    Go Web编程.[新加坡]郑兆雄(带详细书签) PDF 下载

    值得一提的是,本书在教授 Go Web 开发方法时,基本上只会用到 Go 语言自带的标准库,而不会用到任何特定的 Web 框架:这使得读者学习到的知识不会受到特定的框架所限制,即使将来有需要用到现成的框架又或者自行...

    Go WEB 编程 2018 版

    go web编程chm手册,2018年全新编译,基于astaxie的github开源项目编译完成,适合go语言爱好者学习入门,提高,是一个对go语言快速学习上手的手册,你值得拥有。另外要声明:现在网上流传的go web编程,是我个人2015...

    go web 编程

    golang web编程教程资源很好的东西,golang web编程教程资源很好的东西

    Go Web Programming (PDF, EPUB, MOBI)

    Go Web Programming teaches you how to build scalable, high-performance web applications in Go using modern design principles. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub ...

    Go WEB编程

    因为自己对Web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《Build Web Application with Golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写Web应用的一些东西。 对于从...

    go语言web编程.chm

    go语言web编程chm版

    Go WEB 编程 PDF

    Go WEB 编程 PDF Go WEB 编程 PDF Go WEB 编程 PDF Go WEB 编程 PDF

    go语言web开发

    用go语言进行web开发必读的经典书籍。

Global site tag (gtag.js) - Google Analytics