程序笔记   发布时间:2022-07-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Go语言实现简单的登录和文件上传大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

最近学习Go Web编程,先学了个基础的登录和文件上传,使用的是Go语言自带的net/http

Go语言处理请求非常简单,调用http.ListenAndServe函数,监听对应端口,然后http.HandleFunc函数根据请求路径调用不同函数

主函数如下

func main() {
	http.HandleFunc("/",handlerequest)
	http.HandleFunc("/login",login)
	http.HandleFunc("/upload",upload)
    
    //监听8080端口
	err:=http.ListenAndServe(":8080",nil)
	if err!=nil{
		log.Fatal("err:",err)
	}
}
@H_489_9@

先po上咱用的html文件:login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
</head>
<body>
<form action="http://localhost:8080/login" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="登录">
</form>
<br>
上传文件
<form action="http://localhost:8080/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadfile"/>
    <input type="submit" value="upload">
</form>
</body>
</html>
@H_489_9@

先看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,"登录成功")
	}
}
@H_489_9@

拿到请求r后,判断是什么请求方法,如果是get方法,返回login.html文件

如果是post方法,代表这是进行登录操作了,然后使用ParesForm()方法,@R_673_10377@会解析出r.Form和r.PoatForm,不先调用@R_673_10377@,是获取不到表单中的值的

r.Form底层是一个map,所以可以用表单中的name来获取value

控制台输出

Go语言实现简单的登录和文件上传

这里的123d都是我乱打进去的

再看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()
   f,err:=os.OpenFile("./test"+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,"上传成功")
}
@H_489_9@

ParseMultipartForm()这个函数是解析上传来的文件的,参数交maxMemory,文件小与等于maxMemory的部分存在内存中,多出的部分存在系统的临时文件中。它在必要情况下,会调用一下ParseForm(),解析请求提

FormFile返回我们一个文件File类型的对象,就是上传的文件,handler是里面是文件的一些信息

os.OpenFile函数开启一个我们将写入的文件,os.O_WRONLY|os.O_CREATE代表的是打开模式,以只写模式打开,并且文件不存在就创建一个,0666代表的是文件模式,有读写权限

然后就没什么难懂的了。

看我演示

选择一个图片

Go语言实现简单的登录和文件上传

点击上传,成功了

Go语言实现简单的登录和文件上传

看目录里面已经有了这个图片

Go语言实现简单的登录和文件上传

大佬总结

以上是大佬教程为你收集整理的Go语言实现简单的登录和文件上传全部内容,希望文章能够帮你解决Go语言实现简单的登录和文件上传所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。