Golang实现web文件共享服务的示例代码
本文主要介绍了Golang实现web文件共享服务的示例代码,分享给大家,具体如下:
很简单,只需要两行代码。
http.Handle("/",http.FileServer(http.Dir("./")))//把当前文件目录作为共享目录 http.ListenAndServe(":8080",nil)
这时候,通过浏览器打开http://ip地址:8080就可以了。
也许这样就完了,但是我为了方便非程序员用户使用,还需要程序自动获取本机的内网ip地址,最后浏览器自动打开这个地址。
获取内网ip地址
funcGetIntranetIp()(r[]string){ addrs,err:=net.InterfaceAddrs() iferr!=nil{ log.Fatal(err) } for_,address:=rangeaddrs{ ifipnet,ok:=address.(*net.IPNet);ok&&!ipnet.IP.IsLoopback(){ ifipnet.IP.To4()!=nil{ r=append(r,ipnet.IP.String()) } } } return }
本机浏览器自动打开这个地址
loclstr:=fmt.Sprintf("http://%s:8080",ip地址) cmd:=exec.Command("cmd","/C","start"+loclstr) cmd.Run()
完整代码
packagemain import( "fmt" "log" "net" "net/http" "os/exec" "time" ) funcmain(){ address:=GetIntranetIp() fmt.Println("本机ip地址列表:") for_,item:=rangeaddress{ fmt.Println(item) } http.Handle("/",http.FileServer(http.Dir("./"))) fmt.Printf("蕊蕊老师文件共享服务开启,监听8080端口\n请使用浏览器打开:http://ip地址:8080,eg:http://%s:8080\n请不要关闭此程序,祝使用愉快\n",address[0]) gofunc(){ time.Sleep(2000) loclstr:=fmt.Sprintf("http://%s:8080",address[0]) cmd:=exec.Command("cmd","/C","start"+loclstr) cmd.Run() }() iferr:=http.ListenAndServe(":8080",nil);err!=nil{ fmt.Println("err:",err) } } funcGetIntranetIp()(r[]string){ addrs,err:=net.InterfaceAddrs() iferr!=nil{ log.Fatal(err) } for_,address:=rangeaddrs{ ifipnet,ok:=address.(*net.IPNet);ok&&!ipnet.IP.IsLoopback(){ ifipnet.IP.To4()!=nil{ r=append(r,ipnet.IP.String()) } } } return }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。