Go语言使用net/http实现简单登录验证和文件上传功能

news/2024/12/4 17:35:33/

     最近再看Go语言web编程,使用net/http模块编写了一个简单的登录验证和文件上传的功能,在此做个简单记录。

目录

1.文件目录结构

2.编译运行

3.用户登录

 4.文件上传


代码如下:

package mainimport ("fmt""html/template""io""log""net/http""os"
)/*
go运行方式:
(1)解释运行
go run main.go(2)编译运行
--使用默认名
go build main.go
./main
--指定可执行程序名
go build -o test main.go
./test
*/// http://127.0.0.1:8181/login
func login(w http.ResponseWriter, r *http.Request) {fmt.Println("method", r.Method)if r.Method == "GET" {t, _ := template.ParseFiles("login.html")t.Execute(w, nil)} else {r.ParseForm()fmt.Println("username", r.Form["username"])fmt.Println("password", r.Form["password"])fmt.Fprintf(w, "登录成功")}
}// http://127.0.0.1:8181/upload
func upload(writer http.ResponseWriter, r *http.Request) {r.ParseMultipartForm(32 << 10)file, handler, err := r.FormFile("uploadfile")if err != nil {fmt.Fprintf(writer, "上传出错")fmt.Println(err)return}defer file.Close()fmt.Println("handler.Filename", handler.Filename)f, err := os.OpenFile("./filedir/"+handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)if err != nil {fmt.Println(err)fmt.Fprintf(writer, "上传出错")return}defer f.Close()io.Copy(f, file)fmt.Fprintf(writer, "上传成功")
}func common_handle() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("Hello world !"))})http.HandleFunc("/login", login)http.HandleFunc("/upload", upload)
}func main1() {common_handle()//监听8181端口err := http.ListenAndServe(":8181", nil)if err != nil {log.Fatal("err:", err)}
}// 声明helloHandler
type helloHandler struct{}// 定义helloHandler
func (m *helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {w.Write([]byte("Hello world, this is my first golang programe !"))
}func welcome(w http.ResponseWriter, r *http.Request) {w.Write([]byte("Welcome to golang family !"))
}func main2() {a := helloHandler{}//使用http.Handlehttp.Handle("/hello", &a)http.Handle("/welcome", http.HandlerFunc(welcome))common_handle()server := http.Server{Addr:    "127.0.0.1:8181",Handler: nil, // 对应DefaultServeMux路由}server.ListenAndServe()
}func main() {main2()
}

login.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><title>欢迎进入首页</title></head><body><h3>登录测试</h3><hr/><form action="http://localhost:8181/login" method="post"><table border=0 title="测试"><tr><td>用户名:</td><td><input type="text" name="username"></td></tr><tr><td>密码:</td><td><input type="password" name="password"></td></tr><tr><td colspan=2><input type="reset" /><input type="submit" value="登录" /></td></tr></table></form><br><h3>文件上传测试</h3><hr/><form action="http://localhost:8181/upload" method="post" enctype="multipart/form-data"><input type="file" name="uploadfile"/><input type="submit" value="upload"></form></body>
</html>

1.文件目录结构

2.编译运行

 

3.用户登录

http://127.0.0.1:8181/login

 

 4.文件上传

 

 

 

 

 


http://www.ppmy.cn/news/638950.html

相关文章

2021年茶艺师(初级)考试题及茶艺师(初级)考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通&#xff1a;茶艺师&#xff08;初级&#xff09;考试题参考答案及茶艺师&#xff08;初级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及茶艺师&#xff08;初级&#xff09;操…

2022茶艺师(初级)上岗证题库及模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022年茶艺师&#xff08;初级&#xff09;复习题系茶艺师&#xff08;初级&#xff09;操作考试题的新全考试题型&#xff01;2022茶艺师&#xff08;初级&#xff09;上岗证题库及模拟考试根据茶艺师&#xff08;初…

莲花——安妮宝贝§2006-03-01出版

序&#xff1a;柒种 1这是一本以真实地点为背景的长篇小说。既是小说&#xff0c;说明它完全来源于虚构。因为虚构&#xff0c;地点产生新的暗示。仿佛所写的此地&#xff0c;另有他方。它和真实的关系变得微妙。涉水而过&#xff0c;投奔岸的另一边。 一张《喜马拉雅》的原声…

《大众科学》杂志评出世界十大科学才子

据《大众科学》14日报道&#xff0c; 美国著名的《大众科学》杂志评出了世界上前十位“科学才子”这是由数百位受人尊敬的科学家、大学系主任和科学杂志编辑经过6个月的精心筛选评出来的。 大众科学》杂志解释说&#xff0c;所谓“才气”的意思不是聪明&#xff0c;或者说至…

体会现实生活的两个月(上)

体会现实生活的两个月(上): http://blog.csdn.net/andylin02/archive/2006/11/25/1413384.aspx 体会现实生活的两个月(中): http://blog.csdn.net/andylin02/archive/2008/03/19/2198491.aspx 体会现实生活的两个月(下): http://blog.csdn.net/andylin02/archive/2008/03/19/…

自娱自乐

■ 有一个人头戴安全帽,上面绑着一把扇子,左手拿着电风扇,右手拿着水壶,脚穿溜冰鞋,请问他要去哪里?精神病院■ 香港生活的人&#xff0c;是不是可以埋葬在广州呢 &#xff1f;活人怎么可以埋呢■ 小明知道试卷的答案&#xff0c;为什么还频频看同学的&#xff1f;小明是老…

艾萨克·阿西莫夫作品

导读&#xff1a; 火星方式 阿西莫夫 太空船内&#xff0c;介于仅有的两个房间的窄通道上&#xff0c;玛利欧&#xff0e;艾斯特班&#xff0e;理奥兹就站在门口&#xff0c; 很不高兴地看著泰德&#xff0e;隆正努力地调整影像控制板。隆先是顺时针方向转了转&#xff0c;再…

史上最强三千六百道脑筋急转弯(5)

2400—小刘是个很普通的人&#xff0c;为什么竟然能一连十几个小时不眨眼 答案&#xff1a;因为他已经睡了 2401—小张被关在一间没有上锁的房里&#xff0c;可是他使出吃奶的力气也不能把门拉开&#xff0c;这是为什么&#xff1f; 答案&#xff1a;推开就可以了 2402—一口咬…